如何将泛型传递给泛型方法?

时间:2019-08-31 14:38:26

标签: c# asp.net .net asp.net-mvc generics

我想调用一个接受T type对象的方法。在我的自定义方法中,我收到了T type。如何将T type传递给已经收到T type的方法?可以通过反射调用它吗?

下面是我的方法:

public IEnumerable<T> Method2<T>(string fileSrc, char sep)
{
    // Using LinqToCsv lib  
    IEnumerable<T> list;

    CsvFileDescription inputFileDescription = new CsvFileDescription
    {
        SeparatorChar = sep,//specify the separator line  
        FirstLineHasColumnNames = true //Header is in the first line  
    };
    CsvContext csvContext = new CsvContext();
    list = csvContext.Read<T>(fileSrc, inputFileDescription);

    // Data is now available via variable list.  
    return list;
}

在上述方法中,csvContext.Read<T>(fileSrc, inputFileDescription);被声明为

public IEnumerable<T> Read<T>(string fileName, CsvFileDescription fileDescription) 
    where T : class, new();

感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

调用泛型方法时,需要确保type参数与相同的泛型约束匹配。

因此您需要将方法声明更改为

public IEnumerable<T> Method2<T>(string fileSrc, char sep) where T : class, new()

为了调用Read<T>()方法,该方法需要其T类型的参数来匹配这些约束。