【发布时间】:2016-10-13 22:35:51
【问题描述】:
我有一个对象列表(它们的类型提前未知)。下面的示例显示了硬编码值,但我的实际代码通过从 CSV 文件中读取来填充 args 列表。然后,我想将此 args 列表传递给要求某些参数的典型方法。所以我将元素转换为所需的类型,如图所示。我收到错误:
指定的演员表无效
在运行时调用方法时。我应该怎么做呢?
var args = new List<object>();
args.Add(5495);
args.Add("String1");
args.Add(10133);
args.Add("String2");
result = request.GetCustomer((long) args[0], (string) args[1], (int) args[2], (string) args[3]);
【问题讨论】:
-
该错误专门告诉您为什么不能执行转换,包括对象的实际类型是什么以及您尝试将其转换为什么。如果您希望它在运行时不会失败,则需要将对象转换为其 实际 类型。
-
好吧,一个好的开始是围绕这个问题的 try catch 块和计数,以便您可以看到 csv 中的哪一行是罪魁祸首。
-
@Kell A
try/catch块只会掩盖问题。他已经可以看到错误,他只需要修复代码中的错误。 -
你会想要安全地转换这些值,所以
args[0] as long -
@Servy 错误可能在从 csv 文件传递给代码的数据中。