Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menentukan jika Jenis Generik Melaksanakan Antara Muka Generik Tertentu Hanya Menggunakan Nama Jenisnya?
Masalah:
Pertimbangkan jenis ini takrifan:
public interface IFoo<T> : IBar<T> {} public class Foo<T> : IFoo<T> {}
Objektif:
Bagaimana untuk menentukan sama ada jenis Foo
Jawapan:
Menggunakan pendekatan yang dicadangkan oleh TcKs, kami boleh menggunakan pertanyaan LINQ berikut:
bool isBar = foo.GetType().GetInterfaces().Any(x => x.IsGenericType && x.GetGenericTypeDefinition() == typeof(IBar<>));
Pertanyaan ini menyemak sama ada mana-mana antara muka yang dilaksanakan bagi pembolehubah foo ialah jenis generik dan definisi jenis generiknya sepadan dengan daripada IBar
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan jika Jenis Generik Melaksanakan Antara Muka Generik Tertentu Hanya Menggunakan Nama Jenisnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!