这是一个ViewModel属性定义。
private List<ExpandoObject> productList;
public List<ExpandoObject> Products {
get {
return productList;
}
set {
productList = value;
}
}
在selectedProduct ExpandoObject上,我有一个名为lineNum的属性,它以ExpandoObjects的标准方式设置:
product.lineNum = some_integer;
现在,在一个驻留在另一个对象中的方法中,我有这个。 object_passed_in声明为Object,并将productList的成员传递给它。
var selectedProduct = object_passed_in as ExpandoObject
// I have tried this as "dynamic", too
当我设置断点并观看&#34; selectedProduct.lineNum&#34;手表工作正常 - 它显示正确的价值。然而...
if (selectedProduct.lineNum == some_comparison_value) {
// some lines of code
}
抛出错误 - 第一次机会异常,告诉我lineNum不是在ExpandoObject selectedProduct上找到的属性。
我可以通过将ExpandoObject强制转换为IDictionary&lt; string,object&gt;键入,然后以这种方式访问属性:
int passed_in_lineNum = (int)selectedProduct["lineNum"];
但这完全违背了使用ExpandoObject的目的!
什么。上午。我在做。错误。这里???
答案 0 :(得分:2)
你有&#34;启用我的代码&#34;未选中工具 - &gt;选项 - &gt;调试 - &gt;一般?因为,这是第一次机会例外,DLR极有可能抛出并捕获它(我能够通过&#34;启用Just My Code&#34;未经检查)重现这一点。尝试忽略异常或检查&#34;启用我的代码&#34;看看它是否有效