我正在创建<T>
的列表,但我想知道该T对象的类型。 (我在我的项目中使用反射,所以当我创建代码时我不知道类型。
首先我拥有List
- &gt; List<T>
值
现在我想获得该T对象的所有属性(用于在数据网格中创建列)
任何帮助?
答案 0 :(得分:11)
您可以在类或通用方法中使用typeof(T):
void ProcessList<T>(List<T> list) {
Type typeOfT = typeof(T);
// Work with type...
}
答案 1 :(得分:1)
对于GetListType
函数,请参阅this answer。要获取列表的属性以用于数据绑定目的,您应该使用组件模型(为了兼容性) - 即。
PropertyDescriptorCollection props = TypeDescriptor.GetProperties(type);
然后使用PropertyDescriptor
/ GetValue
等查看每个Converter
。您的列表代码通常必须针对非通用IList
进行操作;类似的东西:
IList list = ...
object obj = list[rowIndex];
// then for any given "prop"
object val = prop.GetValue(obj);
string displayText = prop.Converter.ConvertToString(val);
但是,如果您想要“完整”,您还需要查看IListSource
和ITypedList
答案 2 :(得分:0)
您可以从该列表中获取一个对象并查看其类型。我认为虽然肯定有更好的方法。
答案 3 :(得分:0)
是否像GetType()一样简单,然后使用GetProperties()的反射?
答案 4 :(得分:0)
values.GetType().GetGenericArguments()[0].FullName
上面给出了类型'T'
的类型对象values.GetType().GetGenericArguments()[0].GetProperties(System.Reflection.BindingFlags.Public|System.Reflection.BindingFlags.Instance)
上面给出了'T'上可用的公共属性,你可以根据需要传入适当的BindingFlags。