C# 如何正确计算.GetType().IsInstanceOfType(typeof(Interface<;))

C# 如何正确计算.GetType().IsInstanceOfType(typeof(Interface<;)),c#,C#,如何使下面的代码返回true handler变量定义为一个对象,用于模拟实际环境 我已经读过了 void Main() { 对象处理程序=新建TestIntegrationEventHandler(); 类型eventType=typeof(TestIntegrationEvent); 类型concreteType=typeof(IIintegrationEventHandler)。MakeGenericType(eventType); WriteLine(handler.GetType().I

如何使下面的代码返回
true

  • handler
    变量定义为一个
    对象
    ,用于模拟实际环境

  • 我已经读过了

  • void Main()
    {
    对象处理程序=新建TestIntegrationEventHandler();
    类型eventType=typeof(TestIntegrationEvent);
    类型concreteType=typeof(IIintegrationEventHandler)。MakeGenericType(eventType);
    WriteLine(handler.GetType().IsInstanceOfType(concreteType));
    }
    公共类TestIntegrationEvent:IntegrationEvent
    {
    }
    公共类集成事件
    {
    }
    公开类测试集成文坦德勒:i集成文坦德勒
    {
    公共异步任务句柄(TestIntegrationEvent@event)
    {
    }
    }
    公共接口IIintegrationEventHandler:IIintegrationEventHandler,其中TIntegrationEvent:IntegrationEvent
    {
    任务句柄(TIntegrationEvent@event);
    }
    公共接口集成Venthandler
    {
    }
    
    相反

    private static void Main()
    {
        object handler = new TestIntegrationEventHandler();
        Type eventType = typeof(TestIntegrationEvent);
        Type concreteType = typeof(IIntegrationEventHandler<>).MakeGenericType(eventType);
        Console.WriteLine(concreteType.IsInstanceOfType(handler));
        Console.ReadLine();
    }
    
    private static void Main()
    {
    对象处理程序=新建TestIntegrationEventHandler();
    类型eventType=typeof(TestIntegrationEvent);
    类型concreteType=typeof(IIintegrationEventHandler)。MakeGenericType(eventType);
    WriteLine(concreteType.IsInstanceOfType(handler));
    Console.ReadLine();
    }
    
    从for
    IsInstanceOfType

    确定指定对象是否为当前类型的实例


    因此,您询问
    IIntegrationEventHandler
    是否是
    TestIntegrationEventHandler
    类型的实例,这当然是错误的。虽然我真的认为方法的名称没有多大帮助

    相反

    private static void Main()
    {
        object handler = new TestIntegrationEventHandler();
        Type eventType = typeof(TestIntegrationEvent);
        Type concreteType = typeof(IIntegrationEventHandler<>).MakeGenericType(eventType);
        Console.WriteLine(concreteType.IsInstanceOfType(handler));
        Console.ReadLine();
    }
    
    private static void Main()
    {
    对象处理程序=新建TestIntegrationEventHandler();
    类型eventType=typeof(TestIntegrationEvent);
    类型concreteType=typeof(IIintegrationEventHandler)。MakeGenericType(eventType);
    WriteLine(concreteType.IsInstanceOfType(handler));
    Console.ReadLine();
    }
    
    从for
    IsInstanceOfType

    确定指定对象是否为当前类型的实例

    因此,您询问
    IIntegrationEventHandler
    是否是
    TestIntegrationEventHandler
    类型的实例,这当然是错误的。虽然我真的认为方法的名称没有多大帮助