2012-03-06 13 views
5

Autofacを使用してクロスAppDomainプロキシを登録しようとしています。Autofacとクロスアプリケーション間のプロキシ

プロキシによって表される具体的な型は、インターフェイスIServiceHostを実装します。したがって、プロキシは、そのインターフェイスを使用するプロキシへの呼び出しが機能するようにする必要があります。

は私が行うことで、Autofacでプロキシを登録しよう:

void Initialize(IServiceHost host) 
{ 
    Host = host; 

    var builder = new ContainerBuilder(); 
    builder.RegisterInstance(host) 
     .As<IServiceHost>() 
     .SingleInstance(); 

    Scope = builder.Build(); 
} 

しかし、builder.Build()呼び出しで、私が手:

ArgumentExceptionが

型「System.MarshalByRefObject 'はサービス' Treadmarks.Core.ServiceBase.IServiceHost 'に割り当てられません。

それがnullでなく、それは強く型付けされたメソッドの引数から来ているので、hostは、間違いIServiceHostです。

どのように私は適切にプロキシを登録することができます説明できますか?

+0

したがって、 'host'は' IServiceHost'を実装していませんか?その場合、それはオートファックの問題ではありません。 – Steven

+0

@スティーブン私は特に、プロキシ型は* IServiceHostを実装していると言っています。したがって、プロキシもそれを実装する必要があります。 –

+0

Autofacは 'host'が' IServiceHost'であるかどうかをチェックします。そうでないと、Autofacは例外をスローします。 – Steven

答えて

2

この問題を回避するには、.RegisterInstance()ではなく.Register()メソッドでラムダを使用できるようにする必要があります。

+0

これは動作します。ありがとう。 –

関連する問題