c# - 如何将未知类型的泛型列表传递给类构造函数

标签 c#

下面的代码片段对于给定的方法来说工作得很好,但我想在类构造期间做同样的事情。怎么做?

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 是什么,因为类实例的声明会指定它(或能够推断出它)。

关于c# - 如何将未知类型的泛型列表传递给类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45150491/

相关文章:

c# - 在 winforms 应用程序中将 WebBrowser 类升级为 WebView 类

c# - 异常处理和异步异常处理的区别

c# - 如何安装以 dll 形式提供的控件

c# - Style.Add 扭曲字符串,用 "%20"替换空格

c# - 在完整模式下从另一个正在运行的应用程序打开另一个 WinRT 应用程序

c# - Fluent nHibernate - 无法设置批量大小

c# - 如何从 C# 中的国家/地区代码获取语言 native 名称(endonym)?

c# - 如何在 ASP.NET Core 中使用 ILogger 进行单元测试

c# - WPF- TextBlock 中的 "LineSpacing"

c# - 作为 C# 安装程序向导的一部分安装 Matlab MCR