Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menentukan jika Jenis Melaksanakan Antara Muka Generik Tertentu dalam C#?

Bagaimanakah Saya Boleh Menentukan jika Jenis Melaksanakan Antara Muka Generik Tertentu dalam C#?

Barbara Streisand
Barbara Streisandasal
2025-01-07 07:19:41856semak imbas

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

Menentukan sama ada Jenis Melaksanakan Jenis Antara Muka Generik Tertentu

Andaikan anda mempunyai takrif jenis berikut:

public interface IFoo<T> : IBar<T> {}
public class Foo<T> : IFoo<T> {}

Memandangkan hanya jenis hancur, bagaimana anda boleh menentukan sama ada jenis Foo melaksanakan antara muka generik IBar?

Penyelesaian dengan LINQ Query

Seperti yang dicadangkan oleh TcKs, anda boleh menggunakan pertanyaan LINQ berikut:

bool isBar = foo.GetType().GetInterfaces().Any(x =>
  x.IsGenericType &amp;&amp;
  x.GetGenericTypeDefinition() == typeof(IBar<>));

Ini pertanyaan menyemak sama ada mana-mana antara muka foo yang dilaksanakan ialah jenis generik yang sepadan dengan IBar takrifan. Kaedah Any() mengembalikan benar jika sekurang-kurangnya satu antara muka memenuhi kriteria tersebut.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan jika Jenis Melaksanakan Antara Muka Generik Tertentu dalam C#?. 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