📅  最后修改于: 2023-12-03 15:13:52.119000             🧑  作者: Mango
在 C# 中,我们可以使用 is
运算符或 typeof
运算符来检查一个类型是否实现了一个接口。
is
运算符返回一个布尔值,表示一个对象是否与指定的类型相同或派生自该类型。我们可以使用 is
运算符检查一个类型是否实现了一个接口。
if (myObject is MyInterface)
{
// myObject 实现了 MyInterface 接口
}
typeof
运算符返回一个表示指定类型的 System.Type 对象。我们可以使用 typeof
运算符来获取一个类型的 Type 对象,然后调用 Type.GetInterfaces
方法获取该类型实现的接口列表。
Type type = typeof(MyClass);
Type interfaceType = typeof(MyInterface);
if (type.GetInterfaces().Contains(interfaceType))
{
// MyClass 实现了 MyInterface 接口
}
注意,如果要检查的类型是一个接口,那么该类型不会被视为实现该接口。
下面是一个示例代码,演示如何检查一个类型是否实现了一个接口:
using System;
public interface IMyInterface
{
void MyMethod();
}
public class MyClass : IMyInterface
{
public void MyMethod()
{
Console.WriteLine("Hello World!");
}
}
public class Program
{
public static void Main()
{
MyClass myObject = new MyClass();
// 使用 is 运算符检查类型是否实现了接口
if (myObject is IMyInterface)
{
Console.WriteLine("myObject 实现了 IMyInterface 接口");
}
else
{
Console.WriteLine("myObject 没有实现 IMyInterface 接口");
}
// 使用 typeof 运算符检查类型是否实现了接口
Type type = typeof(MyClass);
Type interfaceType = typeof(IMyInterface);
if (type.GetInterfaces().Contains(interfaceType))
{
Console.WriteLine("MyClass 实现了 IMyInterface 接口");
}
else
{
Console.WriteLine("MyClass 没有实现 IMyInterface 接口");
}
}
}
输出结果:
myObject 实现了 IMyInterface 接口
MyClass 实现了 IMyInterface 接口