Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Refleksi Boleh Digunakan untuk Mengesan Kaedah Sambungan Ditambah dalam C#?

Bagaimanakah Refleksi Boleh Digunakan untuk Mengesan Kaedah Sambungan Ditambah dalam C#?

DDD
DDDasal
2025-01-06 08:32:41481semak imbas

How Can Reflection Be Used to Detect Added Extension Methods in C#?

Menentukan Penambahan Kaedah Sambungan Menggunakan Refleksi

Dalam C#, kaedah sambungan boleh menambah kelas sedia ada tanpa mengubah suai kod sumbernya. Untuk memastikan sama ada kaedah sambungan telah ditambahkan pada kelas, refleksi menyediakan teknik yang berdaya maju.

Menggunakan refleksi, anda boleh memeriksa perhimpunan untuk kelas yang dihiasi dengan ExtensionAttribute. Dalam kelas ini, cari kaedah yang juga dihiasi dengan ExtensionAttribute. Selepas itu, bandingkan jenis parameter pertama kaedah dengan jenis sasaran.

Sebagai contoh, pertimbangkan kelas StringExtensions dengan kaedah Songsang sebagai lanjutan untuk kelas rentetan:

public static class StringExtensions
{
    public static string Reverse(this string value)
    {
        // Implementation omitted
    }
}

Menggunakan coretan kod yang disediakan, anda boleh mengesan kaedah sambungan ini:

var assembly = typeof(StringExtensions).Assembly;
var extensionMethods = GetExtensionMethods(assembly, typeof(string));
Console.WriteLine(extensionMethods.First()); // Output: "StringExtensions.Reverse(string)"

Pendekatan ini memastikan anda menyemak semua yang berkaitan perhimpunan dan menyediakan mekanisme untuk mengesahkan bahawa kaedah sambungan telah ditambahkan dengan betul pada pangkalan kod anda.

Atas ialah kandungan terperinci Bagaimanakah Refleksi Boleh Digunakan untuk Mengesan Kaedah Sambungan Ditambah dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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