一尘不染

如何确定类型是否使用C#反射实现接口

c#

是否 反映C#报价的方式来确定是否给予一些System.Type款型的一些接口?

public interface IMyInterface {}

public class MyType : IMyInterface {}

// should yield 'true'
typeof(MyType)./* ????? */MODELS_INTERFACE(IMyInterface);

阅读 379

收藏
2020-05-19

共1个答案

一尘不染

您有几种选择:

  1. typeof(IMyInterface).IsAssignableFrom(typeof(MyType))

  2. typeof(MyType).GetInterfaces().Contains(typeof(IMyInterface))

对于通用接口,则有所不同。

typeof(MyType).GetInterfaces().Any(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IMyInterface<>))
2020-05-19