我有一个针对 WSA、NET45 和 WP8 的可移植类库,我也想针对 SL5。愚蠢的是 99% 的库代码都符合 SL 标准,但有几个地方我调用反射 API 来检索类型属性或字段:
var fields = myType.GetTypeInfo().DeclaredFields;
不幸的是 GetTypeInfo 在 SL5 中不可用,因此上述代码无法编译。所以我基本上有选择:
- 不要从 PCL 定位 SL5,因此我需要为 Silverlight 保留一个单独的库。
- 从使用反射的 PCL 代码中提取,因此 PCL 将需要解决这种对启动的依赖。
- 在运行时做一些聪明的事情,这样 PCL 可以检测哪些方法可用并调用适当的方法。
选项 1 没问题,但我宁愿找到维护重复库的替代方法。如果我必须提取大量功能,那么选项 2 就可以了,因此值得引入一个引导程序。当有几行无法编译时,拖动 DI/IoC 是愚蠢的。
因此,我正在考虑选项 3,但没有清楚地了解它是否可能。反射是我的朋友,但这是我试图克服的反射 API 不匹配。
建议/经验分享表示赞赏。