Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menggunakan Kaedah Statik Menggunakan Refleksi dalam C#?

Bagaimana untuk Menggunakan Kaedah Statik Menggunakan Refleksi dalam C#?

Mary-Kate Olsen
Lepaskan: 2024-12-28 18:45:13
asal
879 orang telah melayarinya

How to Invoke Static Methods Using Reflection in C#?

Menggunakan Kaedah Statik dengan Refleksi

Masalah:

Anda mempunyai beberapa kelas statik dalam namespace mySolution.Macros, setiap satu mengandungi kaedah statik seperti:

public static class Indent
{
    public static void Run()
    {
        // implementation
    }
}
Salin selepas log masuk

Objektif anda adalah untuk menggunakan kaedah ini menggunakan pantulan, walaupun ia adalah statik.

Penyelesaian:

Untuk menggunakan statik kaedah dengan refleksi sambil mengekalkan sifat statiknya, gunakan pendekatan berikut:

foreach (var tempClass in macroClasses)
{
    // Note that the first argument is ignored for static methods
    tempClass.GetMethod("Run").Invoke(null, null);
}
Salin selepas log masuk

Seperti yang dinyatakan dalam dokumentasi untuk MethodInfo.Invoke, hujah pertama adalah berlebihan untuk kaedah statik, jadi anda boleh lulus null dengan selamat.

Bendera Mengikat:

Adalah penting untuk ambil perhatian bahawa anda mungkin perlu menentukan bendera mengikat apabila menggunakan kaedah, seperti yang dicadangkan dalam ulasan:

tempClass.GetMethod("Run", BindingFlags.Public | BindingFlags.Static).Invoke(null, null);
Salin selepas log masuk

Ini memastikan bahawa kaedah tersebut adalah awam dan statik, yang diperlukan untuk penyerahan yang betul.

Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Kaedah Statik Menggunakan Refleksi 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