首页 新闻 会员 周边 捐助

C# 反射问题:如何获取所实现的泛型接口的泛型类型

0
悬赏园豆:50 [已解决问题] 解决于 2023-02-19 15:43

如何获取下面代码 TestIntegrationEventHandler 所实现的接口 IIntegrationEventHandler 中的 TestIntegrationEvent 类型

public class TestIntegrationEventHandler : IIntegrationEventHandler<TestIntegrationEvent>
{ }

需要在下面的扩展方法中获取

public static void SubscribeByEventHandler<TEventHandler>(this IEndpointRouteBuilder builder)
    where TEventHandler : IIntegrationEventHandler
{ }

调用扩展方法的代码

app.SubscribeByEventHandler<TestIntegrationEventHandler>();
dudu的主页 dudu | 高人七级 | 园豆:30939
提问于:2023-02-19 15:01
< >
分享
最佳答案
0

通过下面的代码实现了

public static void SubscribeByEventHandler<TEventHandler>(this IEndpointRouteBuilder builder)
    where TEventHandler : IIntegrationEventHandler
{
    var expectedHandler = typeof(TEventHandler).GetInterfaces()
          .Where(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IIntegrationEventHandler<>))
          .FirstOrDefault();
          
    var eventType = expectedHandler?.GetGenericArguments().FirstOrDefault();

    Console.WriteLine(eventType);
}
dudu | 高人七级 |园豆:30939 | 2023-02-19 15:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册