我正在尝试构建一个便携式类库,该类库在可用时使用平台的实现。例如,
我读到通过使用
是的,我知道
Lazy<T>
在.NET 4.5、Windows Store应用程序、Windows Phone 8上都可用,但在Windows Phone 7、Silverlight 4上不可用。当我的PCL加载到具有Lazy<T>
实现的平台上时,我想使用平台的实现。当平台上没有可用时,我想使用自己的实现。似乎这是可能的,因为Microsoft BCL正在这样做,但我还没有弄清楚如何实现它。我读到通过使用
TypeForwardedToAttribute
,可以重定向PCL以使用平台的实现。我不太确定如何配置我的Visual Studio项目以实现此结果。如果CoreLib是我的库,并且ShimLib包含了我对Lazy<T>
的实现。在哪里添加TypeForwardedToAttribute?该属性需要一个实际的Type引用typeof(System.Lazy<>)
,但在PCL中定位Windows Phone 7时不起作用。如果我删除Windows Phone 7,那么我就不能从CoreLib添加对ShimLib的引用,因为ShimLib不支持CoreLib所支持的所有平台。我该如何处理?是的,我知道
Lazy<T>
很容易实现,但这只是一个示例,我的实际情况适用于许多更不容易实现的类。