为了账号安全,请及时绑定邮箱和手机立即绑定

获取类型的所有派生类型

获取类型的所有派生类型

白板的微信 2019-09-26 09:42:25
有没有更好的(性能更高或更更好的代码;)方法来查找类型的所有派生类型?目前,我正在使用类似的东西:获取二手装配中的所有类型检查所有类型的我的类型是否为“ IsAssignable”我想知道是否有更好的方法可以做到这一点?
查看完整描述

3 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

我很确定您建议的方法将是查找所有派生类型的更简便方法。父类不存储有关其子类是什么的任何信息(如果这样做,那将是很愚蠢的),这意味着无法避免在此处搜索所有类型。

唯一的建议是使用该Type.IsSubclassOf方法,而不是Type.IsAssignable为了检查特定类型是否派生自其他类型。尽管如此,也许仍然有您需要使用的原因Type.IsAssignable(例如,它可以与接口一起使用)。


查看完整回答
反对 回复 2019-09-26
?
青春有我

TA贡献1784条经验 获得超8个赞

假设baseType包含要检查的System.Type对象,matchType包含具有当前迭代类型(通过foreach循环或其他方法)的System.Type对象:

如果要检查Wheather MatchType是从我要使用的baseType表示的类派生的

matchType.IsSubclassOf(baseType)

而且,如果要检查Wheather MatchType实现我将使用的baseType表示的接口

matchType.GetInterface(baseType.ToString(), false) != null

当然,我会将baseType.ToString()存储为全局变量,因此不需要一直调用它。并且由于您可能在具有许多类型的上下文中需要它,因此您也可以考虑使用System.Threading.Tasks.Parallel.ForEach-Loop来遍历所有类型...


查看完整回答
反对 回复 2019-09-26
  • 3 回答
  • 0 关注
  • 496 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信