繁体   English   中英

如何将未知类型的通用列表传递给类构造函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM