通用转换不起作用

ahm*_*iee 0 .net c# generics generic-programming c#-4.0

我使用此代码加载数据并将它们转换为我使用泛型方法获取它的类型:

    public List<TResult> LoadFromeStreamFile<TResult>(string Location)
    {
        List<TResult> result = new List<TResult>();

        StreamReader reader = new StreamReader(Location);

        while (!reader.EndOfStream)
        {
            result.Add((TResult)reader.ReadLine());
        }

        reader.Close();

        return result;
    }
Run Code Online (Sandbox Code Playgroud)

但我在这段代码中有错误result.Add((TResult)reader.ReadLine()); 如何投射stringTResult

Jon*_*eet 8

以为蒙上不能可能工作,除非TResult要么是objectstring.假设你居然想好像是实体创造的东西,我想无论是建议你在通过Func<string, TResult>你使用LINQ或(最好) -所以你不需要这个方法在所有:

var list = File.ReadLines(location)
               .Select(line => new SomeEntity(line))
               .ToList();
Run Code Online (Sandbox Code Playgroud)

如果您仍然需要该方法,可以使用:

public static List<TResult> LoadFromFile<TResult>(string location,
                                                  Func<string, TResult> selector)
{
    return File.ReadLines(location).Select(selector).ToList();
}
Run Code Online (Sandbox Code Playgroud)

......但我不确定它是否值得.我想如果你这么做的话......

(另请注意,当您确实需要从文件中读取时,应该使用using语句,以便即使抛出异常也会关闭文件句柄.)