gpt4 book ai didi

c# - 应用泛型方法的错误

转载 作者:太空狗 更新时间:2023-10-30 00:41:47 26 4
gpt4 key购买 nike

引用我的previous question , 我已经调整我的代码以使用 Generics 就像

FileHelperEngine engine;
public DateTime ExportResultsToCsv<T>(string filePath, string HeaderLine, List<T> data)
{
engine = new FileHelperEngine(typeof(T)) { HeaderText = HeaderLine };
engine.WriteFile(filePath, data);
return DateTime.Now;
}

但是,当我尝试将它集成到我的代码中时,我遇到了以下 2 个错误:

Error 1 The best overloaded method match for 'FileHelpers.FileHelperEngine<object>.WriteFile(string, System.Collections.Generic.IEnumerable<object>)' has some invalid arguments

Error 2 Argument 2: cannot convert from 'System.Collections.Generic.List<T>' to 'System.Collections.Generic.IEnumerable<object>'

我无法理解错误是什么。有人可以帮忙吗。

错误行:

engine.WriteFile(filePath, data);

更新1:

我正在使用 FileHelper.dll 进行 Csv 文件转换,FileHelperEngine 是属于该 dll 的类.

更新2:正如@sza 所建议的,我进行了更改,以下是我的错误截图

enter image description here提前致谢。

最佳答案

这就是为什么。我们来看看source code

        /// <include file='FileHelperEngine.docs.xml' path='doc/WriteFile/*'/>
#if ! GENERICS
public void WriteFile(string fileName, IEnumerable records)
#else
public void WriteFile(string fileName, IEnumerable<T> records)
#endif
{
WriteFile(fileName, records, -1);
}

因为您没有使用 FileHelperEngine 的通用类型(通用方式是 FileHelperEngine<T> ),你可以看到该方法将第二个参数作为 IEnumerable 。 ,它不是通用的 IEnumerable<T>而是对非泛型集合的简单迭代。

所以我相信您可以执行以下操作来使您的代码正常工作:

engine.WriteFile(filePath, (IEnumerable)data);

engine.WriteFile(filePath, data as IEnumerable);

engine.WriteFile(filePath, data.Cast<Object>());

希望对您有所帮助。

关于c# - 应用泛型方法的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18566074/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com