プロパティにアクセスするための匿名型のキャスト
匿名型を元の型にキャストして戻すと、そのプロパティにアクセスするときに問題が発生する可能性があります。これを解決するには、正しい型を推論するトリックを利用できます。
コンパイラーのトリック
メソッド Cast
private static T Cast<T>(T typeHolder, Object x) { // typeHolder above is just for compiler magic // to infer the type to cast x to return (T)x; }
使用法:
var a = new { Id = 1, Name = "Bob" }; TestMethod(a); ... private static void TestMethod(Object x) { // This is a dummy value, just to get 'a' to be of the right type var a = new { Id = 0, Name = "" }; a = Cast(a, x); Console.Out.WriteLine(a.Id + ": " + a.Name); }
代替キャストメソッド
別の方法は、拡張メソッド CastTo
private static T CastTo<T>(this Object value, T targetType) { // targetType above is just for compiler magic // to infer the type to cast value to return (T)value; }
使用法:
var value = x.CastTo(a);
推奨事項
これらの手法では匿名のキャストが可能です型を明確にし、使いやすくするために、実際の型を使用することをお勧めします。
以上がC# で匿名型をキャストしてそのプロパティにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。