【问题标题】:How to get property information from a class如何从类中获取属性信息
【发布时间】:2014-05-27 08:21:33
【问题描述】:

所以我有课;

public class person()
{
public string name {get; set;}
public int age {get; set;}
}

要找出类中属性的名称,我可以使用以下方法:

public void Check<T>(Expression<Func<T>> expr)
{
    var body = ((MemberExpression) expr.Body);
    string name = body.Member.Name;
}

所以这会给我字符串名称中的“年龄”

Check(() => person1.age);

我怎样才能循环这个,以便我可以传入我的初始化类并返回类中所有属性的名称列表。目前我的示例仅适用于 1 但我可能不知道一个类中有多少属性。

例如我想做这样的事情;

foreach( var property in person)
{
    Check(() => property);
}

它会调用 person 类中 name 和 age 属性的方法。

【问题讨论】:

  • 您的主要问题是什么?您想通过登记属性名称来实现什么。

标签: c# class reflection properties


【解决方案1】:

您可以使用System.Reflection

Type type = person1.GetType();
PropertyInfo[] properties = type.GetProperties();

foreach (PropertyInfo property in properties)
{
    Console.WriteLine("Name: " + property.Name + ", Value: " + property.GetValue(person1, null));
}

【讨论】:

    【解决方案2】:

    您可以使用Reflection 来实现此目的。请看以下代码:

    using System.Reflection;  
    
    // get all public static properties of MyClass type
    PropertyInfo[] propertyInfos;
    propertyInfos = typeof(person).GetProperties(BindingFlags.Public |
                                                  BindingFlags.Static);
    // sort properties by name
    Array.Sort(propertyInfos,
            delegate(PropertyInfo propertyInfo1, PropertyInfo propertyInfo2)
            { return propertyInfo1.Name.CompareTo(propertyInfo2.Name); });
    
    
    foreach (PropertyInfo propertyInfo in propertyInfos)
    {
        Console.WriteLine(propertyInfo.Name);
    }
    

    【讨论】:

      猜你喜欢
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-27
      • 1970-01-01
      • 1970-01-01
      • 2017-07-21
      • 1970-01-01
      相关资源
      最近更新 更多