gpt4 book ai didi

C# GetValue of PropertyInfo 与子类

转载 作者:太空狗 更新时间:2023-10-30 01:31:23 24 4
gpt4 key购买 nike

首先,抱歉我的英语不好......我希望你能理解我想说的话。

我的一些代码有问题,我需要获取类属性的值。 (这不是我的完整项目,而是我想做的事情的概念。用这个简单的代码,我被阻止了。)

有代码:(这个示例工作正常。)

using System;
using System.Reflection;

class Example
{
public static void Main()
{
test Group = new test();
BindingFlags bindingFlags = BindingFlags.Public |
BindingFlags.NonPublic |
BindingFlags.Instance |
BindingFlags.Static;
Group.sub.a = "allo";
Group.sub.b = "lol";

foreach (PropertyInfo property in Group.GetType().GetField("sub").FieldType.GetProperties(bindingFlags))
{
string strName = property.Name;
Console.WriteLine(strName + " = " + property.GetValue(Group.sub, null).ToString());
Console.WriteLine("---------------");
}
}
}

public class test
{
public test2 sub = new test2();
}

public class test2
{
public string a { get; set; }
public string b { get; set; }
}

但我想用动态访问替换 Group.sub(比如 foreachGetField(Var) 可以正常工作)。我尝试了很多组合,但我还没有找到任何解决方案。

property.GetValue(property.DeclaringType, null)

property.GetValue(Group.GetType().GetField("sub"), null)

property.GetValue(Group.GetType().GetField("sub").FieldType, null)

所以我想你明白了。我想动态地提供对象 Group.sub 的实例。因为,在我的整个项目中,我有很多子类。

有什么想法吗?

最佳答案

您已经在使用 Group.GetType().GetField("sub") 访问 sub 字段,您需要获取它的值并继续对它:

FieldInfo subField = Group.GetType().GetField("sub");

// get the value of the "sub" field of the current group
object subValue = subField.GetValue(Group);
foreach (PropertyInfo property in subField.FieldType.GetProperties(bindingFlags))
{
string strName = property.Name;
Console.WriteLine(strName + " = " + property.GetValue(subValue, null).ToString());
}

关于C# GetValue of PropertyInfo 与子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41482852/

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