2012-12-25 39 views
0

嗨我创建了一个对象列表,当我尝试访问属性时出现错误,指出该对象不包含该属性的定义。这是我的代码:访问对象列表中的数据导致属性undefined

这是我创建的对象的列表:

public List<object> returnProductData(SetProduct product) 
    { 
     List<object> productData = new List<object>(); 

     var type = product.GetType(); 
     var properties = type.GetProperties(); 

     foreach (var propertyInfo in properties) 
     { 
      if(propertyInfo.GetValue(product , null) != null && propertyInfo.Name != "ProductName" && 
       propertyInfo.Name != "Brand" && propertyInfo.Name != "ProductPrice" && propertyInfo.Name != "ProductImagePath") 
      { 
       productData.Add(new { propertyName = propertyInfo.Name , propertyValue = propertyInfo.GetValue(product , null).ToString()}) ; 
      } 
     } 

     return productData; 
    } 

这是我尝试存取权限它:

@foreach(var productData in ion) 
      { 
       <li>@productData.propertyName</li> 
      } 

当我试图进入电影它,它说:该对象不包含propertyName的定义。我在这里做错了什么?

回答

1

object还没有propertyName财产。

如果描述的场景是非常必要的,如果你使用.NET 4.0或以上,你可以使用dynamic这样的:

public List<dynamic> returnProductData(SetProduct product) 
    { 
     List<dynamic> productData = new List<dynamic>(); 

     var type = product.GetType(); 
     var properties = type.GetProperties(); 

     foreach (var propertyInfo in properties) 
     { 
      if(propertyInfo.GetValue(product , null) != null && propertyInfo.Name != "ProductName" && 
       propertyInfo.Name != "Brand" && propertyInfo.Name != "ProductPrice" && propertyInfo.Name != "ProductImagePath") 
      { 
       productData.Add(new { propertyName = propertyInfo.Name , propertyValue = propertyInfo.GetValue(product , null).ToString()}) ; 
      } 
     } 

     return productData; 
    } 

用法:

@foreach(var productData in ion) 
      { 
       <li>@productData.propertyName</li> 
      } 
2

您不应该返回List<object>您应该使用更具体的类型,例如, List<ProductData>

如果该类不存在,那么写下它。