获取类型的所有派生类型

有没有更好的(性能更高或更更好的代码;)方法来查找类型的所有派生类型?目前,我正在使用类似的东西:

  1. 获取二手装配中的所有类型

  2. 检查所有类型的我的类型是否为“ IsAssignable”

我想知道是否有更好的方法可以做到这一点?


白板的微信
浏览 497回答 3
3回答

繁花如伊

我很确定您建议的方法将是查找所有派生类型的更简便方法。父类不存储有关其子类是什么的任何信息(如果这样做,那将是很愚蠢的),这意味着无法避免在此处搜索所有类型。唯一的建议是使用该Type.IsSubclassOf方法,而不是Type.IsAssignable为了检查特定类型是否派生自其他类型。尽管如此,也许仍然有您需要使用的原因Type.IsAssignable(例如,它可以与接口一起使用)。

青春有我

假设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来遍历所有类型...
打开App,查看更多内容
随时随地看视频慕课网APP