0

こんにちは、オブジェクトのリストを作成しました。プロパティにアクセスしようとすると、オブジェクトにそのプロパティの定義が含まれていないというエラーが表示されます。コードは次のとおりです。

これは、オブジェクトのリストを作成する場所です。

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 の定義が含まれていないと表示されます。ここで何が間違っていますか?

4

2 に答える 2

2

List<object>より具体的なタイプを使用する必要がありますList<ProductData>

そのクラスが存在しない場合は、それを作成します。

于 2012-12-25T14:18:09.727 に答える
1

objecthasn'tpropertyNameプロパティ。

説明されているシナリオが非常に必要であり、.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>
            }
于 2012-12-25T14:19:19.523 に答える