2012-03-06 37 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'。

然而,host絕對IServiceHost,因爲它不爲空,它來自一個強類型的方法參數。

任何人都可以解釋我可以如何正確註冊代理?

+0

所以'主機'不實施'IServiceHost'?在這種情況下,它不是一個Autofac問題。 – Steven 2012-03-06 14:04:59

+0

@Steven我特別說過,代理類型*實現了'IServiceHost',因此代理也必須實現它。 – 2012-03-06 14:12:16

+0

Autofac檢查'host'是否是'IServiceHost',因爲它不是,Autofac拋出異常。 – Steven 2012-03-06 14:20:24

回答

2

您應該能夠使用lambda與.Register()方法,而不是.RegisterInstance()來解決此問題。

+0

這工作。謝謝。 – 2012-03-13 16:40:38