从对象列表中访问数据会导致属性未定义

本文关键字:属性 未定义 数据 对象 列表 访问 | 更新日期: 2023-09-27 17:49:25

嗨,我已经创建了一个对象列表,当我试图访问属性时,我得到一个错误,说对象不包含该属性的定义。下面是我的代码:

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

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的定义。我哪里做错了?

从对象列表中访问数据会导致属性未定义

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

如果这个类不存在,就写出来

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>
            }