C#如果MyClass<>泛型类实现了接口IList,通过typeof获取MyClass的类型后如何利用反射判断是否实现IList接口
时间: 2024-10-01 07:09:05 浏览: 35
在C#中,如果你有一个泛型类`MyClass<T>`实现了`IList<T>`接口,你可以使用`typeof`获取该类的静态类型,然后利用`InterfaceImplemented`属性和`GetInterfaces()`方法结合反射来检查接口实现情况。这里是具体的步骤:
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
public class MyClass<T> : IList<T>
{
// 类的实现...
}
class Program
{
public static void Main(string[] args)
{
// 获取MyClass<T>类型的实例
Type myClassType = typeof(MyClass<>);
// 判断MyClass是否实现了IList接口
if (myClassType.GetInterfaces().Contains(typeof(IList<T>)))
{
Console.WriteLine("MyClass<{0}>实现了IList接口", typeof(T).Name);
}
else
{
Console.WriteLine("MyClass<{0}>没有实现IList接口", typeof(T).Name);
}
}
}
```
在上述代码中,`GetInterfaces()`方法会返回一个包含`MyClass<T>`实现的所有接口的列表,我们只需要检查这个列表中是否包含`IList<T>`即可。
阅读全文