一个类,接受一个object的参数,当参数为List<T>时,我需要知道T到底是什么类型,然后我需要创建T类型的实例进行操作。我自己试了一下,谢了一个Data类,也就是说那个参数实际为List<Data>我obj.GetType()后看到FullName属性为
System.Collections.Generic.List`1[[WindowsApplication40.Data, WindowsApplication40, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]貌似是找到Data类了,也就是第一个[后面,可是我又觉得不保险,总不能通过split来分析吧。。还有其它办法吗?
System.Collections.Generic.List`1[[WindowsApplication40.Data, WindowsApplication40, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]貌似是找到Data类了,也就是第一个[后面,可是我又觉得不保险,总不能通过split来分析吧。。还有其它办法吗?
list<T> init_list<T>(T obj)
{
return new list<T>();
}
恩,这样做倒是也可以,但是还是不是很完美呀,其实就是我在自己写一个控件,其中我要写一个类似DataSource的属性,上述方法就好比让调用者来告诉我你的是什么类型,而不是底层自己判断,.net自带的控件都是自动判断的。
{
IEnumerable list = obj as IEnumerable;
foreach (object o in list)
{
o.GetType();
}
}
{
接口 obj接口=(接口)obj
}
public object DataSource
{
get
{
return this.dataSource;
}
set
{
if (((value != null) && !(value is IList)) && !(value is IListSource))
{
throw new ArgumentException(SR.GetString("BadDataSourceForComplexBinding"));
}
if (this.dataSource != value)
{
try
{
this.SetDataConnection(value, this.displayMember, false);
}
catch
{
this.DisplayMember = "";
}
if (value == null)
{
this.DisplayMember = "";
}
}
}
}
GetGenericArguments方法。
看是不是泛型, 是看IsGenericType属性。