下面是一个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被声明为对象,productList的一个成员被传递到对象中。
var selectedProduct = object_passed_in as ExpandoObject
// I have tried this as "dynamic", too当我设置一个断点并观看"selectedProduct.lineNum“时,手表工作正常-它显示了正确的值。然而..。
if (selectedProduct.lineNum == some_comparison_value) {
// some lines of code
}抛出一个错误--一个第一次机会异常,告诉我lineNum不是在ExpandoObject selectedProduct上找到的属性。
我可以通过将ExpandoObject转换为IDictionary<字符串( object > type ),然后以这种方式访问属性,从而击败提交它:
int passed_in_lineNum = (int)selectedProduct["lineNum"]; 但这完全违背了使用ExpandoObject的目的!
什么。上午。一.做。不对。这里?
发布于 2014-09-25 22:08:16
您是否在Tools -> Options -> Debugging -> General中未选中“只启用我的代码”?因为这是第一次机会异常,DLR抛出并捕获它的可能性很大(我能够在“只启用我的代码”不加检查的情况下复制这个异常)。尝试忽略异常或检查“只启用我的代码”,看看它是否有效。
https://stackoverflow.com/questions/26048590
复制相似问题