ああ、どうすれば説明できますか?おそらく簡単な質問ですが、私の心は揚げられています。.NETの型付きオブジェクトのリストでオブジェクトのプロパティの値をすべて選択するにはC#
私は、このクラスがあるとします。
public class NestedObject
{
public string NestedName { get; set; }
public int NestedIntValue { get; set; }
public decimal NestedDecimalValue { get; set; }
}
public class SomeBigExternalDTO
{
public int Id { get; set; }
public int UserId { get; set; }
public int SomeIntValue { get; set; }
public long SomeLongValue { get; set; }
public decimal SomeDecimalValue { get; set; }
public string SomeStringValue { get; set; }
public NestedObject SomeNestedObject { get; set; }
// ... thousands more of these properties... inherited code
}
をそして、私は移入したいクラスはここにある:
public class MyResult
{
public int UserId { get; set; } // user id from above object
public string ResultValue { get; set; } // one of the value fields from above with .ToString() executed on it
}
私は何をしたいのですが戻るためにヘルパーを作成することですこのオブジェクトのリスト内のすべてのインスタンスのプロパティ値(クロスセクションは私が推測できる最良の方法です):
var foo = new List<SomeBigExternalDTO>();
foo = GetMyListOfSomeBigExternalDTO();
public static List<MyResult> AwesomeHelper(List<SomeBigExternalDTO> input, SearchableProperty thePropertyIWant)
{
// some magic needs to happen here...
}
ここでのトリッキーな部分は、私は(私はこれを行う方法を見当もつかない)動的にリンクセレクタに基づいてプロパティに渡したいです:
var output = AwesomeHelper(GetMyListOfSomeBigExternalDTO(), x => x.SomeIntValue);
var output2 = AwesomeHelper(GetMyListOfSomeBigExternalDTO(), x => x.SomeNestedObject.NestedIntValue);
そして、これはユーザーIDでMyResultオブジェクトのリストを返す必要がありますし、 SomeIntValue.ToString()は、入力リストの各項目に対応しています。
うわー、これは理にかなっていると思います。これが明確でない場合は私にお知らせください。私は詳細を提供します。私はこれが私が見落とした図書館に焼いたものだと本当に期待しています。
私はこれを達成するための任意のアイデアですか?
回答ありがとうございます!私のフォローアップの質問をここでチェックしてください:http://stackoverflow.com/questions/7396781/architecturally-speaking-how-should-i-replace-an-extremely-large-switch-statemen – longda