[英]how to pass generic list of unknown type to class constructor
下面的代码段对于给定的方法工作得很好但我想在类构造期间做同样的事情。 怎么做?
public static DataTable ToDataTable<T>(IList<T> data)
想要这样的东西......但构造函数不喜欢<T>(IList<T>
部分。
public class DTloader
{
PropertyDescriptorCollection props;
DataTable dataTable = new DataTable();
public DTloader<T>(IList<T> data)
{
props = TypeDescriptor.GetProperties(typeof(T));
for (int i = 0; i < props.Count; i++)
{
PropertyDescriptor prop = props[i];
dataTable.Columns.Add(prop.Name, prop.PropertyType);
}
}
.......
此时,班级本身需要是通用的。 像这样的东西:
public class DTloader<T>
{
//...
public DTloader(IList<T> data)
{
//...
}
}
构造函数在编译时会知道T
是什么,因为类实例的声明会指定它(或者能够推断它)。
除了给出的答案,如果你想拥有一个非通用的DTLoader,你可以创建一个抽象的DTLoader并使通用的DTLoader继承它
abstract class DTLoader
{
//..
}
class DTLoader<T> : DTLoader
{
public DTloader(IList<T> data)
{
//...
}
}
这实际上会给你你想要的感觉 - 只有构造函数使用泛型类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.