如何从班级获取房产信息

时间:2014-04-13 11:17:38

标签: c# class reflection properties

所以我有一个班级;

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;
}

所以这会给我字符串名称中的'age'

Check(() => person1.age);

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

e.g。我想做这样的事情;

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

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

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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));
}