我有一个这样的课程:
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
个成员,但我无法访问它。
答案 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
。