Menentukan Pelaksanaan Antara Muka Generik daripada Jenis Mungled
Dalam senario di mana hanya jenis hancur yang mewakili kelas tersedia, menentukan sama ada ia melaksanakan antara muka generik boleh mencabar. Pertimbangkan contoh berikut:
public interface IFoo<T> : IBar<T> {} public class Foo<T> : IFoo<T> {}
Persoalannya timbul: bagaimana kita boleh memastikan sama ada jenis Foo melaksanakan antara muka generik IBar
Penyelesaian:
Satu pendekatan untuk menyelesaikan pertanyaan ini adalah dengan menggunakan kaedah IsGenericType dan GetGenericTypeDefinition yang tersedia dalam C#. Kaedah ini membenarkan pemeriksaan dan manipulasi jenis generik.
// Assuming 'foo' represents the mangled type of 'Foo<T>' bool isBar = foo.GetType().IsGenericType && foo.GetType().GetGenericTypeDefinition() == typeof(IBar<>);
Kod ini menilai sama ada jenis hancur adalah generik dan membandingkan definisi jenis generiknya dengan jenis definisi antara muka yang dijangkakan(IBar<>). Jika kedua-dua syarat dipenuhi, pembolehubah isBar ditetapkan kepada benar, menunjukkan pelaksanaan jenis antara muka generik.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan sama ada Jenis Mangled Melaksanakan Antara Muka Generik dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!