ホームページ > バックエンド開発 > C++ > C# で匿名型をキャストしてそのプロパティにアクセスするにはどうすればよいですか?

C# で匿名型をキャストしてそのプロパティにアクセスするにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-06 01:37:40
オリジナル
673 人が閲覧しました

How Can I Cast an Anonymous Type in C# to Access Its Properties?

プロパティにアクセスするための匿名型のキャスト

匿名型を元の型にキャストして戻すと、そのプロパティにアクセスするときに問題が発生する可能性があります。これを解決するには、正しい型を推論するトリックを利用できます。

コンパイラーのトリック

メソッド Castオブジェクト x と、目的の型の型ホルダー typeHolder を受け入れます。匿名型 a を typeHolder として渡すことにより、コンパイラーは x をキャストする型を推論できます:

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート