C# 如何获取类型中的方法
给定:System.Type实例 目的是在类型中获得新引入的方法(我不知道正确的词),它们是 -未继承 -未被推翻 我想使用.NET反射,并尝试了C# 如何获取类型中的方法,c#,.net,system.reflection,C#,.net,System.reflection,给定:System.Type实例 目的是在类型中获得新引入的方法(我不知道正确的词),它们是 -未继承 -未被推翻 我想使用.NET反射,并尝试了Type.GetMethods()方法。但是,它甚至返回继承的和重写的 在得到所有的方法之后,我想到了过滤。我查看了MethodInfoclass公开的属性/方法。我不知道如何得到我想要的 例如:我有一门课, class A{void Foo(){} 当我调用typeof(A).GetMethods()时,我会得到Foo以及System.Object中
Type.GetMethods()
方法。但是,它甚至返回继承的和重写的
在得到所有的方法之后,我想到了过滤。我查看了MethodInfo
class公开的属性/方法。我不知道如何得到我想要的
例如:我有一门课,
class A{void Foo(){}
当我调用typeof(A).GetMethods()
时,我会得到Foo
以及System.Object
中的方法:等于,ToString
,GetType
和GetHashCode
。我只想将其过滤为Foo
有人知道怎么做吗
谢谢。GetMethods
有一个重载,可以让您指定。例如,如果需要获取所有声明的、公共的、实例方法,则需要传递相应的标志
var declaredPublicInstanceMethods =
typeof(A).GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance);
您可以按DeclaringType筛选返回的MethodInfo集合:
var methods = typeof(A).GetMethods().Where(mi => mi.DeclaringType== typeof(A));
我希望这就是你想要的
var methods = typeof(MyType).GetMethods(System.Reflection.BindingFlags.DeclaredOnly);
试试这个
typeof(Foo).GetMethods(BindingFlags.Public|BindingFlags.Instance|BindingFlags.DeclaredOnly)
继承和重写的方法属于该类型。为什么你希望他们不会被列入名单?你能解释一下你想要完成什么吗?我正在试图生成一份报告,报告中说这些方法是新添加到库/产品中的。由于业务需求,我不想列出继承/重写的方法。它们必须作为其定义类型的一部分进行报告。谢谢。这在很大程度上起了作用。被重写的方法仍然会出现。好吧,如果一个方法重写了一个方法,那么该方法是该类型声明的一部分,为什么它不呢?不起作用。出于某些原因,仅使用DeclaredOnly标志是不够的。无论如何,谢谢你。