Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menentukan jika Jenis Generik Melaksanakan Antara Muka Generik Tertentu Hanya Menggunakan Nama Jenisnya?

Bagaimanakah Saya Boleh Menentukan jika Jenis Generik Melaksanakan Antara Muka Generik Tertentu Hanya Menggunakan Nama Jenisnya?

Linda Hamilton
Lepaskan: 2025-01-07 07:05:40
asal
721 orang telah melayarinya

How Can I Determine if a Generic Type Implements a Specific Generic Interface Using Only its Type Name?

Menentukan Pelaksanaan Antara Muka Jenis Generik

Masalah:

Pertimbangkan jenis ini takrifan:

public interface IFoo<T> : IBar<T> {}
public class Foo<T> : IFoo<T> {}
Salin selepas log masuk

Objektif:

Bagaimana untuk menentukan sama ada jenis Foo melaksanakan antara muka generik IBar apabila hanya nama jenis hancur tersedia.

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

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. Jika antara muka sedemikian wujud, ia menunjukkan bahawa Foo melaksanakan 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!

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