2013-03-06 15 views
10

Ho bisogno le seguenti chiamate possibili all'interno della stessa libreria di classi portatile:.portatile Libreria di classi con asincrono attendono & GetType() IsValueType

public class Foobar 
{ 
    void Foo() 
    { 
     var b = GetType().IsValueType; //<-- 2 
    } 

    async Task<IEnumerable<T>> Bar<T>() 
     where T : class, IBaz, new() 
    { 
     return await Task.Factory.StartNew(() => new List<T>(new[] //<-- 1 
      { 
       new T {Qux = Guid.NewGuid().ToString()} 
      })); 
    } 

    interface IBaz 
    { 
     string Qux { get; set; } 
    } 
} 

Con i seguenti quadri obiettivo fissati:

  • . nET Framework 4.5
  • Sliverlight 5
  • Windows Phone 8
  • . Rete per Windows Store applicazioni

ottengo questo errore di generazione:
Non riesci a trovare tutti i tipi richiesti dal modificatore 'asincrono'. Stai prendendo di mira la versione di framework sbagliata o manca un riferimento a un assembly?

Ho provato a installare lo bcl ma ho ancora lo stesso errore. E se rimuovo il target Sliverlight l'async funziona ma poi perdo il puntello IsValueType dalla classe Type ...

+3

Non vedo alcun motivo perché quel metodo sia 'async'. Basta rimuovere 'async',' await', e il gioco è fatto. Oltre a ciò, non vedo nemmeno perché l'operazione debba avvenire in un thread thread thread; la generazione di un singolo GUID è un'operazione * molto * veloce. Perderai un * lotto * più tempo a partire dal thread del pool di thread. – Servy

+0

L'esempio serve esclusivamente per ricreare l'errore di compilazione e non è indicativo di come sia strutturata la soluzione. – jaimie

risposta

12

È necessario installare Microsoft.Bcl.Async.

+1

Grazie, felice che fosse qualcosa di semplice che mi mancava ... – jaimie

Problemi correlati