我有一个针对WSA,NET45和WP8的可移植类库,我还希望以SL5为目标。有些愚蠢的是,99%的库代码符合SL标准,但有几个地方我调用反射API来检索类型属性或字段:
var fields = myType.GetTypeInfo().DeclaredFields;
不幸的是,GetTypeInfo在SL5中不可用,因此上面的代码将无法编译。所以我基本上有选择:
选项1没问题,但我宁愿找到维护重复库的替代方法。 如果我必须提取大量功能,那么选项2就可以了,所以值得引入一个bootstraper。当它是几行不编译时,拖动DI / IoC是愚蠢的。
所以我在考虑选项3而没有明确的理解,如果有可能的话。反思是我的朋友,但这是我想要克服的反映API不匹配。
赞赏建议/经验分享。
答案 0 :(得分:1)
在玩完代码之后,我发现我可以简单地使用旧方式检索字段:
var fields = myType.GetFields(BindingFlags.Public | BindingFlags.Static);
我的印象是,由于反射API更改,此语法在PCL中不可用,但事实上相反:使用此语法我可以针对WSA定位.NET 4.0.3,.NET 4.5,.NET WP8和SL5。
答案 1 :(得分:-1)
这个怎么样?
Reflection.Assembly = Reflection.IntrospectionExtensions.GetTypeInfo(GetType(*anyTypeInAssembly*)).Assembly