0

としてのリストと としてProductSpec {id, Name}の別のリストがありましProduct {productspec, id, Name}た。Product のプロパティにアクセスしようとすると

IList<PropertyInfo> properties = typeof(Product).GetProperties().ToList();

ID と名前をプロパティとして取得していますが、これは問題ありませんが、productspec を次のように繰り返そうとすると、

foreach(var property in properties)
{
    IList<PropertyInfo> properties = property.propertytype.getproperties();
    // I am not getting the productspec columns 
    //instead I am getting (capacity,count ) as my properties..
}

では、リストからリストを繰り返してリストのプロパティを取得するにはどうすればよいですか

4

3 に答える 3

3

の型は typeまたはtypeProductSpecProductクラスですか? リストの場合は、次のことができます。ProductSpecList<ProductSpec>

var properties = new List<PropertyInfo>();
foreach (var property in properties)
{
    if (typeof(IEnumerable).IsAssignableFrom(property.PropertyType)
        && property.PropertyType.IsGenericType
        && property.PropertyType.GetGenericArguments().Length == 1)
    {
        IList<PropertyInfo> innerProperties = property.PropertyType.GetGenericArguments()[0].GetProperties();
        //should contain properties of elements in lists
    }
    else
    {
        IList<PropertyInfo> innerProperties = property.PropertyType.GetProperties();
        //should contain properties of elements not in a list
    }
}
于 2012-12-28T14:40:16.747 に答える
3

プロパティ タイプに同じコードを使用する必要があります。

var innerProperties = property.PropertyType.GetProperties().ToList();

foreachまた、結果の名前を変更します -ループ内の変数と競合します。

于 2012-12-28T11:04:58.313 に答える
0

これを試して:

    PropertyInfo[] propertyInfos = typeof(Product).GetProperties();
        foreach (var propertyInfo in propertyInfos)
        {
            var inner = propertyInfo.PropertyType.GetProperties().ToList();
        }

public class Product
{
    public ProductSpec Spec { get; set; }

    public string Id { get; set; }

    public string Name { get; set; }
}

public class  ProductSpec
{
    public string Id { get; set; }

    public string Name { get; set; }
}
于 2012-12-28T11:11:09.137 に答える