通过PropertyInfo获取房产名称

时间:2015-05-03 19:49:55

标签: c# reflection

我有一个这样的课程:

public abstract class SomeClass<T> where T: new() {
    ...
    public void GetData() {
        ...
        var cur = new T();
        var properties = typeof (T).GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly).ToList();
    ...
    }
}

其中T可以是

public class {
    ...
    public int SomeField {get; set;}
    ...
}

我怎样才能通过属性获得“SomeField”?

如果我打电话给properties[i].Name,我会收到“Int32”。

属性中有RuntimePropertyInfo个成员,但我无法访问它。

1 个答案:

答案 0 :(得分:1)

这很好用:

public class SomeType
{
    public int SomeField { get; set; }
}
class Program
{
    static void GetData<T>()
    {
        var properties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly).ToList();
        var firstPropertyName = properties[0].Name;
        Console.WriteLine(firstPropertyName);
    }
    static void Main()
    {
        GetData<SomeType>();
    }
}

我认为您正在访问.PropertyType.Name而不是.Name