小编典典

如何确定一个类型是否实现了带有 C# 反射的接口

all

反射 是否提供C#了一种方法来确定某些给定System.Type类型是否为某些接口建模?

public interface IMyInterface {}

public class MyType : IMyInterface {}

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

阅读 119

收藏
2022-03-04

共1个答案

小编典典

你有几个选择:

  1. typeof(IMyInterface).IsAssignableFrom(typeof(MyType))
  2. typeof(MyType).GetInterfaces().Contains(typeof(IMyInterface))
  3. 使用 C# 6,您可以使用typeof(MyType).GetInterface(nameof(IMyInterface)) != null

对于通用接口,它有点不同。

typeof(MyType).GetInterfaces().Any(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IMyInterface<>))
2022-03-04