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
Linda Hamiltonasal
2025-01-07 07:05:40716semak imbas

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> {}

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<>));

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!

Kenyataan:
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