1

用語がよくわからないので、明確さの欠如を許してください: List<someclass> コレクションが与えられた場合、リストコレクション内の特定のクラスメンバー/プロパティの配列を返すことを可能にするリフェクションを利用する拡張メソッドを作成できます。プロパティ名?内部型は異なる場合がありますが、拡張メソッドは正しい型を返します。

public class someClass
{
    public someClass(UInt32 _someInt, Double _someDouble, String _someString)
    {
        someInt = _someInt;
        someDouble = _someDouble;
        someString = _someString;
    }
    public UInt32 someInt { get; set; }
    public Double someDouble { get; set; }
    public String someString { get; set; }

  }

...
List<someClass> listOfClasses = new List<someClass>();
listOfClasses.Add(new someClass(...));
listOfClasses.Add(new someClass(...));
listOfClasses.Add(new someClass(...));

//an extension function that does something like this
object[] propDouble = listOfClasses.ToArray("someDouble");
4

3 に答える 3

1
var propDouble = listOfClasses.Select(x => typeof(someClass)
                                           .GetProperty("someDouble")
                                           .GetValue(x)).ToArray();
于 2013-05-07T16:41:18.550 に答える
0

短い答え: はい

どのように:

object[] propDouble = listOfClasses.Select(o => o.GetType()
                                                 .GetField("someDouble")
                                                 .GetValue(o)).ToArray();

これを拡張メソッドに簡単に変換できます。

于 2013-05-07T16:38:54.603 に答える
0

これはあなたが望むものを満たさないのですか?

List<someclass> L;
IEnumerable<DesiredPropertyType> Properties = 
     L.Select(Item => Item.DesiredProperty).ToArray();
于 2013-05-07T16:40:53.797 に答える