我正在学习C#中的泛型。对于有经验的人来说,这可能很简单。
我有71个不同的模型,我想能够使用泛型将数据从CSV通用地存储到它们中。
处理部分并不是特别难,我有这个方法签名:
我有71个不同的模型,我想能够使用泛型将数据从CSV通用地存储到它们中。
处理部分并不是特别难,我有这个方法签名:
private static async Task ProcessFileAsync<T>(string currentFile) where T : class, new()
难点在于如何调用它。我有一个CSV文件,每个模型都需要将数据放入其中。CSV文件的名称与模型的名称相同(例如:Product.csv对应Product模型)。
理想情况下,我希望只需在调用者中发送名称,但我收到了“X是变量,但像类型一样使用”的编译器错误。
我可以有一个庞大的switch语句来解决这个问题,但这似乎相当浪费。
任何帮助将不胜感激。
换句话说,我可以采取以下方法:
switch(justFName)
{
case "Address":
_ = ProcessFileAsync<Address>(ci.FullName);
break;
case "Currency":
_ = ProcessFileAsync<Currency>(ci.FullName);
break;
...
...
...And so on
...
...
default:
//No method for this file name
break;
}
相反,我希望有类似这样的内容:
_ = ProcessFileAsync<justFName>(ci.FullName);