Вот определение свойства 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
}
выдает ошибку - исключение первого шанса, говорящее мне, что lineNum не является свойством, найденным в ExpandoObject selectedProduct.
Я могу превзойти ExpandoObject в подчинении, приведя его к строке IDictionary‹, object> type, а затем обратившись к свойству следующим образом:
int passed_in_lineNum = (int)selectedProduct["lineNum"];
но это полностью противоречит цели использования ExpandoObject!
Что. Являюсь. Я делаю. Неправильный. Здесь???