如何从嵌套类访问包含类的字段

A191919

SuperClass1使用类型时,如何通过反射获取所有字段SubClass1

这是我到目前为止所拥有的:

namespace ConsoleApplication9
{
    class Program
    {
        static void Main(string[] args)
        {
            SuperClass1.SubClass1 class1 = new SuperClass1.SubClass1();
            PrintAllFields(class1);
        }

        public static void PrintAllFields(object obj)
        {
            var SuperClassType = obj.GetType();
            // How do I get the fields 'param1', 'param2', 'param3' from here?
            SuperClassType.GetFields();
        }
    }

    public class SuperClass1
    {
        public int param1;
        public int param2;
        public int param3;
        public class SubClass1
        {
            public int paramTest;
        }
    }
}
米尔斯特

您正在寻找的称为声明类型。

您可以查看以下链接以获取更多信息:MSDN,声明类型

你的代码可以写成:

public static void PrintAllFields(object obj)
{
    var nestedClassType = obj.GetType();
    var declaringClassType = nestedClassType.DeclaringType;

    if (declaringClassType != null)
    {
        var fields = declaringClassType.GetFields();
    }
}

不要忘记检查是否真的有一个声明类型,否则你declaringClassType将是空的,你最终会得到一个NullReferenceException.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章