下面是一个 ViewModel 属性的定义。
private List<ExpandoObject> productList;
public List<ExpandoObject> Products {
get {
return productList;
}
set {
productList = value;
}
}
在所选的产品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
当我设置断点并观察"selectedProduct.lineNum"时,监视器可以正常工作 - 它显示正确的值。然而...
if (selectedProduct.lineNum == some_comparison_value) {
// some lines of code
}
抛出一个错误 - 第一次机会异常,告诉我在选择的ExpandoObject中找不到lineNum属性。
我可以将ExpandoObject强制转换为IDictionary<string, object>类型,并通过以下方式访问属性以解决问题:
int passed_in_lineNum = (int)selectedProduct["lineNum"];
但这完全违背了使用 ExpandoObject 的目的!
我在这里做错了什么???