C# 如何获取继承自特定类型的类的所有方法
我有一大堆从基类“Port”继承的类 有人知道如何获取从“端口”继承的所有类的所有公共方法吗 我知道我必须调用GetMethods方法,而您将其作为一个类型取消 我想,如果我能以某种方式获得从端口继承的所有类的列表,我可以这样做: (从端口继承的所有类型)C# 如何获取继承自特定类型的类的所有方法,c#,C#,我有一大堆从基类“Port”继承的类 有人知道如何获取从“端口”继承的所有类的所有公共方法吗 我知道我必须调用GetMethods方法,而您将其作为一个类型取消 我想,如果我能以某种方式获得从端口继承的所有类的列表,我可以这样做: (从端口继承的所有类型) 这里有人能帮忙吗?你可以用这样的方法: Assembly assembly = [get your assembly instance]; Type t = typeof(Port) var methods = assembly.GetTyp
这里有人能帮忙吗?你可以用这样的方法:
Assembly assembly = [get your assembly instance];
Type t = typeof(Port)
var methods = assembly.GetTypes()
.Where(p => t.IsAssignableFrom(p))
.SelectMany(x => x.GetMethods());
您可以使用以下内容:
Assembly assembly = [get your assembly instance];
Type t = typeof(Port)
var methods = assembly.GetTypes()
.Where(p => t.IsAssignableFrom(p))
.SelectMany(x => x.GetMethods());
好吧,现在我们知道他们在同一个集合中,我想你想要:
var methods = from type in typeof(Port).Assembly.GetTypes()
where typeof(Port).IsAssignableFrom(type)
from method in type.GetMethods()
select method;
阿卡
请注意,这将在要获取的类型列表中包括端口本身
您可能希望使用BindingFlags.DeclaredOnly来避免重复使用相同的方法-这取决于您以后尝试使用它们做什么。好的,现在我们知道它们在同一个程序集中,我怀疑您想要:
var methods = from type in typeof(Port).Assembly.GetTypes()
where typeof(Port).IsAssignableFrom(type)
from method in type.GetMethods()
select method;
阿卡
请注意,这将在要获取的类型列表中包括端口本身
您可能希望使用BindingFlags.DeclaredOnly
来避免重复使用相同的方法-这取决于您以后尝试对它们执行的操作。您知道所有派生类型是否都将位于同一程序集中(或者至少要查看哪些程序集中)?是的,这一点很好。我知道它们将在端口程序集中,所以也许我可以使用类似assembly.GetAssembly(typeof(Port))的东西作为获取正确程序集的开始?您知道所有派生类型是否都将在同一程序集中(或者至少要查看哪些程序集)?是的,这一点很好。我知道它们将在端口程序集中,所以也许我可以使用类似assembly.GetAssembly(typeof(Port))的东西作为获取正确程序集的开始?