Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh memintas Panggilan Kaedah dalam C# Tanpa Perpustakaan Luaran?
Jangan gunakan perpustakaan pihak ketiga untuk memintas panggilan kaedah dalam C#
Terdapat beberapa cara untuk memintas panggilan kaedah dalam C# tanpa menggunakan pustaka luaran, walaupun tiada satu pun daripadanya yang mudah. Di bawah disenaraikan dua pilihan untuk dipertimbangkan:
mewarisi kelas sasaran daripada MarshalByRefObject
atau ContextBoundObject
dan mentakrifkan harta yang diwarisi daripada IMessageSink
. Ubah suai sifat ini untuk memintas panggilan kaedah dan memanggil kaedah pengelogan yang sesuai. Walau bagaimanapun, pendekatan ini boleh menjejaskan prestasi dengan teruk.
Gunakan refleksi untuk memeriksa kelas, mendapatkan semula sifat dan menyuntik kod ke dalam kaedah sedia ada. Ini memerlukan pemahaman yang mendalam tentang renungan dan mungkin tidak boleh dilaksanakan atau boleh dipercayai kerana keterbatasan Reflection.Emit
. Sebagai alternatif, anda boleh mempertimbangkan untuk menggunakan sambungan kepada pengkompil CLR, tetapi ini memerlukan kepakaran yang biasanya tidak dimiliki oleh pembangun C#.
Sebahagian daripada penyelesaian diubah suai menggunakan kaedah panggilan:
Jika pengubahsuaian kaedah Caller.Call
dibenarkan, penyelesaian akan lebih mudah diurus. Dengan menggunakan proksi pemintasan atau mencipta kelas baharu yang melaksanakan antara muka yang sama seperti Traced
adalah mungkin untuk memintas panggilan kaedah dan melakukan pengelogan yang diperlukan sebelum mewakilkan kepada kelas asal. Pendekatan ini memerlukan beberapa pemfaktoran semula tetapi mengelakkan kerumitan AOP dalam C#.
Atas ialah kandungan terperinci Bagaimanakah saya boleh memintas Panggilan Kaedah dalam C# Tanpa Perpustakaan Luaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!