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

3

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

下面是我的方法:

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();

我将非常感激您的帮助。


@RenéVogt,我已经得到了Martin的答案,但仍然非常感谢您的关注。 - Mubsher Mughal
1个回答

5
当您调用泛型方法时,需要确保类型参数符合相同的泛型约束。
因此,您需要更改方法声明为:
public IEnumerable<T> Method2<T>(string fileSrc, char sep) where T : class, new()

为了调用Read<T>()方法,需要保证T类型参数符合这些约束条件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接