Winforms Datagrid への Fluent Interface を作成しようとしています。これにより、型指定されたデータソースを使用し、プロパティ (Order.Custom.FullName) のプロパティを簡単に使用できるようになります。
初期化時に列を追加し、そこで使用するプロパティを設定しようとしています:
dgv.With<Order>().Column("Client Name").On(x => x.Client.FullName);
元の質問は、データソースを設定するときに発生します。
dgv.SetTypedDatasource<T>(IList<Order> orders)
ここでの大きな問題は、ジェネリックコントロールが不可能であるため(推測)、クラスに T を指定することはできず、メソッドごとに指定する必要があることです...
ラムダ式の特定のプロパティに基づいて、匿名型のリストを作成したいと考えています。
何かのようなもの:
ProcessList<Client>(clientList, x => x.FullName);
次のようなことは可能ですか?
[編集] 実際には、式は以前に設定され、別の場所にフェッチされることに注意してください...
public void ProcessList<T>(IList<T> sourceList, Expression<Func<T, object>> expression)
{
var list =
(from T x
in sourceList
select new { expression })
.ToList();
// process list .... grid.DataSource = list;
}
したがって、指定された式に基づいて匿名型を作成したいと思います。その式を評価して正しいプロパティを取得できることはわかっています。
私はちょっと立ち往生しています、このようなことは可能ですか?
何か案は?