gpt4 book ai didi

c# - 我怎么知道一个方法是否不是从基类 C# 派生的

转载 作者:太空宇宙 更新时间:2023-11-03 12:08:52 25 4
gpt4 key购买 nike

鉴于这段代码,我如何使用“i”变量知道该方法不是从基类派生的,而是在最低级的类中声明的?例如,我不需要打印 GetType()、ToString() 等方法。

MethodInfo[] methods = Type.GetType(
"Probabilities_Theory.ProbabilitiesTheory").GetMethods();

foreach (var i in methods)
{
if (!i.IsVirtual) // another condition needed
Console.WriteLine(i);
}

我不需要知道它是否被覆盖,因为例如 GetType() 方法不是虚拟的。但我仍然不希望 GetType() 被打印出来。

GetType() 和其他虚拟方法的共同点是它们都不是在最落魄的类中声明的。

我可以这样做:

if (i.DeclaringType == typeof(ProbabilitiesTheory))
Console.WriteLine(i);

但我希望我的代码更加自动化、更加程序化等等。就像一个人不知道它是什么类型。

最佳答案

尝试使用 BindingFlags.DeclaredOnly:

MethodInfo[] methods = Type.GetType("Probabilities_Theory.ProbabilitiesTheory")
.GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);

关于c# - 我怎么知道一个方法是否不是从基类 C# 派生的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53470157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com