这可能在C#GetStringName(o.Property)或o.Property.GetPropertyStringName()?

时间:2009-12-16 15:15:25

标签: c# reflection

  

可能重复:
  How do I get the name of a property from a property in C# (2.0)

我需要一些方法来获取属性的字符串名称,我不知道这是否可以在C#中使用,是吗?

2 个答案:

答案 0 :(得分:0)

在C#3和.NET 3.5中使用表达式树,你可以做一些关闭

GetStringName(() => o.Property)

或者您可以使用匿名类型和反射:

GetStringName(new { o.Property })

但两者都有点hacky。 (我有blog post一个后者的例子,诚然为了一个略微不同的目的,但它表明了一般的想法。)如果你能告诉我们更多关于你为什么需要知道这个,我们或许能够建议你更好。

答案 1 :(得分:-1)

如果您想将所有属性名称作为字符串数组获取,可以执行以下操作:

Type myClassType = myClass.GetType(); //get your class type
PropertyInfo[] myClassProps = myClassType.GetProperties();

然后你可以循环播放它们

string namesAndValues;
foreach(PropertyInfo prop in myClassProps){
     namesAndValues += "Property Name: " + prop.Name + ", Value: " + prop.GetValue(myClass, null).ToString();
}