匿名型へのキャスト
WinForm の BindingSource のコンテキストでは、匿名型の型とプロパティ値を取得するという課題が発生する場合があります。 BindingSource の Current プロパティからの型。匿名型は軽量のデータ構造を定義する便利な方法を提供しますが、匿名型を使用するとキャストの問題が発生する可能性があります。
この問題に対処するには、コンパイラ推論を利用する手法を採用できます。
private static void TestMethod(Object x) { // Dummy value to establish the desired type var a = new { Id = 0, Name = "" }; a = Cast(a, x); Console.Out.WriteLine(a.Id + ": " + a.Name); } private static T Cast<T>(T typeHolder, Object x) { return (T)x; }
このコードでは、Cast 関数は typeHolder パラメーターを利用して、x に必要な型を推測します。このトリックは、同一のプロパティと順序を持つ匿名型が同じ基底型にマップされるという事実を利用します。
次の使用法を検討してください。
var value = x.CastTo(a);
このアプローチにより、次のプロパティにアクセスできます。匿名型であるため、アプリケーション内で受け渡されるデータ構造には実数型を使用することが一般的に推奨されます。匿名型は、ローカルでの単一メソッドの使用に最適です。
以上がWinForms BindingSource の匿名型にキャストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。