使用Mono.Cecil确定类型是否实现接口

时间:2012-06-23 12:56:58

标签: .net vb.net mono.cecil

我查看了Wiki上的文档,但看起来有点薄。如何确定类型是否使用Cecil实现给定的接口?对于我的特定实现,重要的是我实际上并没有将类型加载到AppDomain中。

这是我到目前为止的代码:

Dim outputModule As ModuleDefinition = ModuleDefinition.ReadModule(outputFile)

For Each assemblyType As TypeDefinition In outputModule.Types
    'How to determine if assemblyType implements a specific interface?
Next

1 个答案:

答案 0 :(得分:4)

在C#中,我实现了比较接口的全名:

if (assemblyType.Interfaces.Any(
  type => type.Resolve().FullName == typeof(YourInterface).FullName
)) {
  // ...
}

如果你的接口有TypeDefinition,你也可以比较{{1}}。