找不到ExpandoObject属性

时间:2014-09-25 21:40:00

标签: c# .net expandoobject

这是一个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的目的!

什么。上午。我在做。错误。这里???

1 个答案:

答案 0 :(得分:2)

你有&#34;启用我的代码&#34;未选中工具 - &gt;选项 - &gt;调试 - &gt;一般?因为,这是第一次机会例外,DLR极有可能抛出并捕获它(我能够通过&#34;启用Just My Code&#34;未经检查)重现这一点。尝试忽略异常或检查&#34;启用我的代码&#34;看看它是否有效