ホームページ >バックエンド開発 >C++ >C# でオブジェクトを匿名型にキャストするにはどうすればよいですか?

C# でオブジェクトを匿名型にキャストするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-05 22:46:40120ブラウズ

How Can I Cast an Object to an Anonymous Type in C#?

匿名型へのキャスト

問題は、オブジェクトを匿名型にキャストする方法です。匿名型はオブジェクト初期化子を使用して作成され、データを保存する便利な方法としてよく使用されます。ただし、これらには型名がないため、キャストが困難になる可能性があります。

オブジェクトを匿名型にキャストする 1 つの方法は、目的の匿名のダミー値を使用するトリックを使用することです。タイプ。このダミー値は、キャストされるオブジェクトのタイプを推測するために使用されます。以下に例を示します。

public class Program
{
    public static void Main(string[] args)
    {
        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.WriteLine(a.Id + ": " + a.Name);
    }

    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;
    }
}

オブジェクトを匿名型にキャストする別の方法は、汎用拡張メソッドを使用することです。このメソッドを使用して、オブジェクトを任意の匿名型にキャストできます。以下に例を示します。

public static class AnonymousTypeExtensions
{
    public 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;
    }
}

public class Program
{
    public static void Main(string[] args)
    {
        var a = new { Id = 1, Name = "Bob" };
        var b = a.CastTo(new { Id = 0, Name = "" });
        Console.WriteLine(b.Id + ": " + b.Name);
    }
}

ただし、この方法で匿名型を使用するのは難しい場合があり、一般には推奨されないことに注意することが重要です。代わりに実数型を使用することをお勧めします。

以上がC# でオブジェクトを匿名型にキャストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。