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
Mary-Kate Olsenasal
2024-12-28 18:45:13883semak imbas

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

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

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

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!

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