gpt4 book ai didi

C# 反射 : Get info for all members of class and base classes

转载 作者:行者123 更新时间:2023-11-30 20:58:59 26 4
gpt4 key购买 nike

当我运行以下代码时,它只返回一个 MethodInfo/FieldInfo/etc。直接属于我在其中搜索信息对象的 Type。如何找到信息对象,而不管它驻留在基类中并且可能是私有(private)的?

obj.GetType().GetMethod(methodName, bindingFlags);

最佳答案

好吧,您回答了自己的问题,但据我了解,您的主要要求是无论信息对象在层次结构中的什么位置,我如何找到它?

此处不需要递归来获取完整层次结构中的所有成员。您可以在 Type 上使用 GetMembers 函数,它将返回所有成员,包括所有基类。

下一个代码示例演示了这一点:

var names = 
typeof(MyClass).GetMembers()
.Select (x => x.Name);

Console.WriteLine (string.Join(Environment.NewLine, names));

对于这样的结构

class MyClass : Base
{
public string Name { get; set; }
public string Surname { get; set; }
}

class Base
{
public string Name { get; set; }
}

返回

get_Name
set_Name
get_Surname
set_Surname
get_Name
set_Name
ToString
Equals
GetHashCode
GetType
.ctor
Name
Surname

请注意,自动属性的 get_Name 访问器出现了两次,因为 MyClass 隐藏了基类的 Name 属性。还要注意ToStringGetType等方法,定义在object

关于C# 反射 : Get info for all members of class and base classes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15711500/

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