Reflection 如何从使用反射API的可移植类库中定位Silverlight?
我有一个针对WSA、NET45和WP8的可移植类库,我还希望针对SL5。愚蠢的是99%的库代码都是SL兼容的,但在有些地方我调用反射API来检索类型属性或字段:Reflection 如何从使用反射API的可移植类库中定位Silverlight?,reflection,silverlight-5.0,portable-class-library,Reflection,Silverlight 5.0,Portable Class Library,我有一个针对WSA、NET45和WP8的可移植类库,我还希望针对SL5。愚蠢的是99%的库代码都是SL兼容的,但在有些地方我调用反射API来检索类型属性或字段: var fields = myType.GetTypeInfo().DeclaredFields; 不幸的是,GetTypeInfo在SL5中不可用,因此上面的代码无法编译。所以我基本上有三种选择: 不要以PCL中的SL5为目标,因此我需要为Silverlight保留一个单独的库 从使用反射的PCL代码中提取,因此PCL需要在开始时解
var fields = myType.GetTypeInfo().DeclaredFields;
不幸的是,GetTypeInfo在SL5中不可用,因此上面的代码无法编译。所以我基本上有三种选择:
建议/经验分享非常感谢。在使用代码后,我突然想到,我可以简单地使用旧的检索字段的方法:
var fields = myType.GetFields(BindingFlags.Public | BindingFlags.Static);
我的印象是,由于反射API的改变,这种语法在PCL中是不可用的,但事实上恰恰相反:使用这种语法,我可以针对WSA、WP8和SL5的.NET 4.0.3、.NET 4.5、.NET这两个方面
Reflection.Assembly = Reflection.IntrospectionExtensions.GetTypeInfo(GetType(*anyTypeInAssembly*)).Assembly
这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论-您可以随时在自己的帖子上发表评论,一旦有足够的评论,您就可以发表评论了。问题是GetTypeInfo作为类型的直接方法不可用。另一种方法是Reflection.IntrospectionExtensions.GetTypeInfo(type)。