【发布时间】:2018-12-01 01:41:23
【问题描述】:
我有一个方法,我只能在运行时检索对象类型。我试图将它转换为已知对象的列表,但我失败了。
private string outputParamForListOrDict(IMethodReturn returnValue)
{
StringBuilder sb = new StringBuilder();
String outputString = string.Empty;
switch (returnValue.ReturnValue.GetType().GetGenericArguments()[0].Name)
{
case nameof(ViewDocumentReport):
List<ViewDocumentReport> _viewDocumentParam = (List<ViewDocumentReport>)returnValue.ReturnValue;
//process the data here........
return sb.ToString();
//Other object cases
}
}
我在下面遇到了一个异常:
"Unable to cast object of type >'<TakeIterator>d__25`1[ezAcquire.RMS.Model.ViewModels.ViewDocumentReport]' to type 'System.Collections.Generic.List`1[ezAcquire.RMS.Model.ViewModels.ViewDocumentReport]'."}
我在调试模式下设置了一个断点。 我的 returnValue.ReturnValue 是
如果我展开,我可以看到列表列表。
有人可以向我解释 d_25 是什么意思,并建议我在运行时如何正确转换它吗?
谢谢
【问题讨论】:
-
returnValue.ReturnValue 是对象类型,它没有 .Cast 方法。查看以下链接:msdn.microsoft.com/en-us/library/…我使用的是framework 4.6.2,你来自不同的版本吗?
-
不,我只是不知道你的模型的细节。在尝试将其设为列表之前,您可能需要转换为
IEnumerable<ViewDocumentReport>。
标签: c# list casting enumerable custom-object