2012-12-25 37 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>

如果該類不存在,那麼寫下它。