2

WCF では、インターフェイスと実装クラスを別のアセンブリに配置するのが一般的です。構成に基づいて WCF プロキシ クラスを作成するクラスを作成しています (web.config のサービスまたは serviceActivations から、または svc ファイルの Service 属性から)。私のクラスでは、サービス クラスから割り当て可能なインターフェイスを取得したいと考えています。クラスとインターフェイスが同じアセンブリにある場合、これは簡単です。

Type type = Type.GetType("MyNamespace.MyClass, MyAssembly");
if (type != null)
{
    var interfaces =
    Assembly.GetAssembly(type)
            .GetTypes()
            .Where(t => t.IsInterface && t.IsAssignableFrom(type));               
}

(CurrentDomain.GetAssemblies() を使用して) すべてのアセンブリを取得し、その方法でインターフェイスを見つけることによって、ブルート フォース リフレクション ソリューションを使用する以外に、別の (不明な) アセンブリからインターフェイスを取得するための規定の方法はありますか?

また、この作業を自分で行う代わりに、WCF ディスカバリーを使用することについても知っています。残念ながら、私の状況ではオプションではありません。

4

1 に答える 1

1

この情報を提供できる「GetInterfaces()」と呼ばれる便利なリフレクションメソッドがあることがわかりました。

Type type = Type.GetType(activation.Service);
if (type != null)
   Type[] interfaces = type.GetInterfaces();
于 2013-03-18T12:27:53.967 に答える