Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menghantar Objek kepada Jenis Tanpa Nama dalam C#?

Bagaimanakah Saya Boleh Menghantar Objek kepada Jenis Tanpa Nama dalam C#?

Linda Hamilton
Lepaskan: 2025-01-05 22:46:40
asal
149 orang telah melayarinya

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

Hantar ke Jenis Tanpa Nama

Persoalannya ialah cara menghantar objek kepada jenis tanpa nama. Jenis tanpa nama dicipta menggunakan pemula objek dan sering digunakan sebagai cara yang mudah untuk menyimpan data. Walau bagaimanapun, mereka tidak mempunyai nama jenis, yang boleh menyukarkan untuk menghantarnya.

Salah satu cara untuk menghantar objek kepada jenis tanpa nama adalah dengan menggunakan helah yang melibatkan penggunaan nilai tiruan daripada anonim yang diingini taip. Nilai dummy ini digunakan untuk membuat kesimpulan jenis objek yang akan dihantar. Berikut ialah contoh:

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;
    }
}
Salin selepas log masuk

Cara lain untuk menghantar objek kepada jenis tanpa nama ialah menggunakan kaedah sambungan generik. Kaedah ini boleh digunakan untuk menghantar objek kepada mana-mana jenis tanpa nama. Berikut ialah contoh:

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);
    }
}
Salin selepas log masuk

Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa menggunakan jenis tanpa nama dengan cara ini boleh menjadi rumit dan tidak disyorkan secara umum. Adalah lebih baik untuk menggunakan jenis sebenar.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghantar Objek kepada Jenis Tanpa Nama dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan