C# 如何获取类型中的方法

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中

给定:System.Type实例

目的是在类型中获得新引入的方法(我不知道正确的词),它们是 -未继承 -未被推翻

我想使用.NET反射,并尝试了
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标志是不够的。无论如何,谢谢你。