MetAdataloadContext和继承

约翰

C#论坛主持人
工作人员
加入
2011年4月23日
消息
1,159
地点
挪威
编程经验
10+
我正在使用MetadataloadContext来检查程序集,并想知道是否可以检测类型的继承?常规反射方法ISSUBCLASOF或ISASSIGNABLEFROM不起作用。具体而言,我想检查一个类型是委托,而无需在baseType.name上进行字符串比较。

 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,889
地点
切萨皮克,va.
编程经验
10+
有趣的是......所以你提供的链接中的这个声明是不正确的?
除了涉及代码执行的情况之外,您可以使用加载的程序集上的所有反射API。

I would not have expected issubclassof.() to need to execute code. I can sort of see how isassignablefrom() would need to execute code due to implicit and explicit overrides that can be written by a class author.
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,889
地点
切萨皮克,va.
编程经验
10+
哦,我看到...在Issubclassof文档的底部():
Note
除非与接口一起使用, issubclassof. 是匡威 isassignablefrom。也就是说,如果t1.issubclassof(t2)是真的,则t2.isassignablefrom(t1)也是如此。
此方法可以被派生类覆盖。
 

约翰

C#论坛主持人
工作人员
加入
2011年4月23日
消息
1,159
地点
挪威
编程经验
10+
没有类型的比较似乎与之合作"meta types",但与已知缓慢的常规反射相比,它非常快。
例如,在仅反射的上下文中,customattributesdata.attributeType将例如使用TargetFrameWorkAttribute进行比较,与MetAdataloadContext执行相同将与False进行比较 - 但是一个可以比较attributeType.name与字符串"TargetFrameWorkAttribute.".
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,889
地点
切萨皮克,va.
编程经验
10+
您是否偷看了解MEF如何确定是否支持加载项?或者它只是通过加载组装来依靠普通的旧反射?
 

约翰

C#论坛主持人
工作人员
加入
2011年4月23日
消息
1,159
地点
挪威
编程经验
10+
MEF使用普通反射。我不是在尝试加载附件,只是发现装配信息。我现在有这么多工作。
 
最佳 底部