2

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
4

1 に答える 1

6

C# では、インターフェイスの完全な名前を比較して実装しました。

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

TypeDefinitionインターフェイス用の s がある場合は、 s を比較することもできます。

于 2012-06-23T13:04:13.087 に答える