找不到ExpandoObject属性

本文关键字:属性 ExpandoObject 找不到 | 更新日期: 2023-09-27 18:24:44

以下是ViewModel属性定义。

private List<ExpandoObject> productList;
public List<ExpandoObject> Products {
    get {
        return productList;
    }
    set {
        productList = value;
    }
}

在selectedProductExpandoObject上,我有一个名为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

当我设置一个断点并监视"selectedProduct.lineNum"时,该监视工作得很好——它显示了正确的值。然而

if (selectedProduct.lineNum == some_comparison_value) {
    // some lines of code
}

抛出一个错误-第一次机会异常,告诉我lineNum不是在ExpandoObject selectedProduct上找到的属性。

我可以通过将ExpandoObject强制转换为IDictionary<字符串,对象>类型,然后以这种方式访问属性:

int passed_in_lineNum = (int)selectedProduct["lineNum"]; 

但这完全违背了使用ExpandoObject的目的!

什么。我在做。错误的在这里

找不到ExpandoObject属性

是否在"工具"->"选项"->"调试"->"常规"下取消选中"仅启用我的代码"?由于这是一个第一次机会出现的异常,DLR很有可能抛出并捕获它(我可以在未选中"Enable Just My Code"的情况下复制它)。尝试忽略异常或检查"仅启用我的代码",看看它是否有效。