2013-03-06 48 views
10

我需要下面的调用有可能在同便携式类库中:便携式类库与异步等待和的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; } 
    } 
} 

随着设置以下的目标框架:

  • 。 .NET框架4.5
  • 的Sliverlight 5级
  • 的Windows Phone 8
  • 。网络的Windows Store应用程序

我得到这个生成错误:
无法找到由“异步”修改所需的所有类型。你是针对错误的框架版本,还是缺少对程序集的引用?

我试图安装bcl但仍然得到相同的错误。 如果我删除Sliverlight目标的异步工作,但然后我失去了Type类的IsValueType道具...

+3

我没有看到任何理由,该方法是'async'。只要删除'async','await',就完成了。除此之外,我甚至不明白为什么这个操作需要在线程池线程中发生;生成一个单一的GUID是一个*非常*快速的操作。开始线程池线程会让你失去更多的时间。 – Servy 2013-03-06 18:40:11

+0

该示例纯粹是为了重新编译编译错误,并不能说明解决方案的结构。 – jaimie 2013-03-06 23:54:13

回答

12

您需要安装Microsoft.Bcl.Async

+1

谢谢,很高兴这件事很简单,我错过了... – jaimie 2013-03-07 09:17:01