【发布时间】:2016-07-08 23:01:01
【问题描述】:
我正在尝试将 Object 转换为动态类型,但转换失败并出现 RunTimeBinder 异常。我尝试使用在 Stackoverflow 答案中遇到的两种方法。
代码 1:
object objSum;
dynamic dynSum;
objSum = dataTableColumnChart.Compute(String.Format("Count({0})", strColumnName), "");
dynSum = Convert.ChangeType(objSum, objSum.GetType());\
Debug.Writeline(dynSum);
代码 2:
dynSum=objSum;
Debug.Writeline(dynSum);
抛出的异常是这样的:
A first chance exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' occurred in Unknown Module.
请注意,在这两种情况下,执行 Debug 语句都会引发异常。
【问题讨论】:
-
你确定你得到与代码 2 相同的错误吗?我不认为对动态类型的简单分配会导致异常。你能给出确切的错误信息吗?
-
@PMF 嗨,我现在已经在我的问题中添加了详细信息。
-
是 Debug.Writeline(dynSum.ToString()); 抛出的异常;
-
当您使用 dynamic 关键字时,“第一次机会”异常并不罕见。您只是看到 DLR 正在探索评估表达式的方法,最快的方法就是尝试它并在其方法没有成功时捕获异常。功能,而不是错误。
标签: c# type-conversion dynamictype