反射 是否提供C#了一种方法来确定某些给定System.Type类型是否为某些接口建模?
C#
System.Type
public interface IMyInterface {} public class MyType : IMyInterface {} // should yield 'true' typeof(MyType)./* ????? */MODELS_INTERFACE(IMyInterface);
你有几个选择:
typeof(IMyInterface).IsAssignableFrom(typeof(MyType))
typeof(MyType).GetInterfaces().Contains(typeof(IMyInterface))
typeof(MyType).GetInterface(nameof(IMyInterface)) != null
对于通用接口,它有点不同。
typeof(MyType).GetInterfaces().Any(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IMyInterface<>))