所以我有一个班级;
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属性的方法。
答案 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));
}