【问题标题】:Is it possible to loop through a C# Class object?是否可以循环遍历 C# 类对象?
【发布时间】:2010-10-24 19:20:43
【问题描述】:

我有一个 C# 类,我想将属性作为键/值对循环,但不知道如何。

这是我想做的:

Foreach (classobjectproperty prop in classobjectname)
{
    if (prop.name == "somename")
        //do something cool with prop.value
}

【问题讨论】:

    标签: c#


    【解决方案1】:

    是的:

    Type type = typeof(Form); // Or use Type.GetType, etc
    foreach (PropertyInfo property in type.GetProperties())
    {
        // Do stuff with property
    }
    

    这不会将它们作为键/值对提供,但您可以从 PropertyInfo 获取各种信息。

    请注意,这只会提供公共属性。对于非公开的,您可能希望使用采用BindingFlags 的重载。如果您真的只想要特定实例的实例属性的名称/值对,您可以执行以下操作:

    var query = foo.GetType()
                   .GetProperties(BindingFlags.Public |
                                  BindingFlags.Instance)
                   // Ignore indexers for simplicity
                   .Where(prop => !prop.GetIndexParameters().Any())
                   .Select(prop => new { Name = prop.Name,
                                         Value = prop.GetValue(foo, null) });
    
    foreach (var pair in query)
    {
        Console.WriteLine("{0} = {1}", pair.Name, pair.Value);
    }
    

    【讨论】:

      【解决方案2】:

      查看here 的解决方案 - 尽管这仅限于公共财产,但该方法应该适合您获得所有这些。

      【讨论】:

        猜你喜欢
        • 2019-04-29
        • 2018-05-27
        • 2015-03-08
        • 1970-01-01
        • 2020-06-09
        • 1970-01-01
        • 1970-01-01
        • 2011-03-06
        • 1970-01-01
        相关资源
        最近更新 更多