加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何获取类型中的方法

发布时间:2020-12-15 04:06:04 所属栏目:百科 来源:网络整理
导读:给定:System.Type实例. 目的是在类型中获得新引入的方法(我不知道正确的单词) – 没有继承 – 没有被覆盖 我想使用.NET Reflection,我尝试了Type.GetMethods()方法.但是,它甚至返回了继承和被覆盖的. 在获得所有方法后我想到了过滤.我查看了MethodInfo类公
给定:System.Type实例.

目的是在类型中获得新引入的方法(我不知道正确的单词)
– 没有继承
– 没有被覆盖

我想使用.NET Reflection,我尝试了Type.GetMethods()方法.但是,它甚至返回了继承和被覆盖的.

在获得所有方法后我想到了过滤.我查看了MethodInfo类公开的属性/方法.我无法想象得到我想要的东西.

例如:我有一节课,
A类{void Foo(){}}

当我调用typeof(A).GetMethods()时,我得到了Foo以及System.Object中的方法:Equals,ToString,GetType和GetHashCode.我想把它过滤到只有Foo.

有谁知道如何做到这一点?

谢谢.

解决方法

GetMethods有一个重载,允许您指定 BindingFlags.例如.因此,如果您需要获取所有声明的公共实例方法,则需要传递相应的标志.
var declaredPublicInstanceMethods = 
    typeof(A).GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读