Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh menggunakan Kaedah Statik Menggunakan Refleksi dalam .NET?

Bagaimanakah saya boleh menggunakan Kaedah Statik Menggunakan Refleksi dalam .NET?

DDD
DDDasal
2024-12-26 16:37:17459semak imbas

How Can I Invoke Static Methods Using Reflection in .NET?

Memanggil Kaedah Statik dengan Refleksi

Dalam .NET, adalah perkara biasa untuk mempunyai kelas statik yang menyediakan kaedah utiliti atau sambungan. Timbul persoalan: bagaimanakah kita boleh menggunakan kaedah statik ini menggunakan pantulan?

Seperti yang ditunjukkan oleh coretan kod yang disediakan, kaedah bukan statik boleh digunakan dan digunakan menggunakan pantulan. Walau bagaimanapun, apabila berurusan dengan kaedah statik, pendekatan alternatif diperlukan.

Kuncinya terletak pada pemahaman bahawa hujah pertama kaedah MethodInfo.Invoke diabaikan untuk kaedah statik. Oleh itu, daripada mencipta contoh kelas, kita hanya boleh memberikan null sebagai argumen pertama.

Berikut ialah blok kod dikemas kini yang menunjukkan cara memanggil kaedah statik menggunakan refleksi:

foreach (var tempClass in macroClasses)
{
    // Call the static "Run" method using reflection
    tempClass.GetMethod("Run").Invoke(null, null);
}

Untuk keselamatan tambahan, anda mungkin mahu memastikan bahawa kaedah itu memang statik semasa memanggil GetMethod:

tempClass.GetMethod("Run", BindingFlags.Public | BindingFlags.Static).Invoke(null, null);

Dengan menggunakan pendekatan ini, anda boleh menggunakan sebarang kaedah Jalankan statik dari ruang nama yang ditentukan, menyediakan cara yang fleksibel untuk melaksanakan makro atau fungsi utiliti tanpa memerlukan instantiasi kelas langsung.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan Kaedah Statik Menggunakan Refleksi dalam .NET?. 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