📜  c# 检查类型是否实现接口 - C# (1)

📅  最后修改于: 2023-12-03 15:13:52.119000             🧑  作者: Mango

C# 检查类型是否实现接口

在 C# 中,我们可以使用 is 运算符或 typeof 运算符来检查一个类型是否实现了一个接口。

使用 is 运算符

is 运算符返回一个布尔值,表示一个对象是否与指定的类型相同或派生自该类型。我们可以使用 is 运算符检查一个类型是否实现了一个接口。

if (myObject is MyInterface)
{
    // myObject 实现了 MyInterface 接口
}
使用 typeof 运算符

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 接口