Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menentukan sama ada Jenis Mangled Melaksanakan Antara Muka Generik dalam C#?

Bagaimanakah Saya Boleh Menentukan sama ada Jenis Mangled Melaksanakan Antara Muka Generik dalam C#?

Patricia Arquette
Lepaskan: 2025-01-07 07:13:46
asal
926 orang telah melayarinya

How Can I Determine if a Mangled Type Implements a Generic Interface in C#?

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> {}
Salin selepas log masuk

Persoalannya timbul: bagaimana kita boleh memastikan sama ada jenis Foo melaksanakan antara muka generik IBar apabila hanya jenis hancur disediakan?

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<>);
Salin selepas log masuk

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!

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