当前位置:  开发笔记 > 编程语言 > 正文

如何在C#中找到对象的所有公共字段?

如何解决《如何在C#中找到对象的所有公共字段?》经验,为你挑选了2个好方法。

我正在构建一个方法来接收一个ArrayList(可能是完整的对象),然后列出ArrayList中每个对象的所有字段(及其值).

目前我的代码如下:

public static void ListArrayListMembers(ArrayList list)
    {
        foreach (Object obj in list)
        {
            Type type = obj.GetType();
            string field = type.GetFields().ToString();
            Console.WriteLine(field);

        }
    }

当然,我理解这段代码的直接问题:如果它有效,它只会在ArrayList中为每个对象打印一个字段.我稍后会修复它 - 现在我只是好奇如何获取与对象关联的所有公共字段.



1> Dave Markle..:
foreach (Object obj in list) {
    Type type = obj.GetType();

    foreach (var f in type.GetFields().Where(f => f.IsPublic)) {
        Console.WriteLine(
            String.Format("Name: {0} Value: {1}", f.Name, f.GetValue(obj));
    }                           
}

请注意,此代码需要.NET 3.5才能工作;-)



2> Jonathan Web..:

您可以使用BindingFlags获取在类中直接声明的所有对象Fields:

GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly)

和所有对象字段包括继承:

GetFields(BindingFlags.Public | BindingFlags.Instance)

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有