2012-03-06 3 views
5

Autofac으로 교차 AppDomain 프록시를 등록하려고합니다.Autofac 및 교차 AppDomain 프록시

프록시가 나타내는 구체적인 유형은 인터페이스 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는 아니고, 강력한 형식의 방법 인수에서 유래 이후

그러나 hostIServiceHost확실히입니다.

누구든지 프록시를 올바르게 등록 할 수있는 방법을 설명 할 수 있습니까?

+0

그래서'host'는'IServiceHost'를 구현하지 않았습니까? 이 경우에는 Autofac 문제가 아닙니다. – Steven

+0

@Steven 필자는 프록시 화 된 타입이 IServiceHost를 구현한다고 특별히 말했기 때문에 프록시는 그것을 구현해야만한다. –

+0

Autofac은'host'가'IServiceHost'인지 확인하고 그렇지 않으면 Autofac이 예외를 throw합니다. – Steven

답변

2

이 문제를 해결하려면 .RegisterInstance() 대신 .Register() 메서드가있는 람다를 사용할 수 있어야합니다.

+0

이것은 작동합니다. 감사. –