Autofac和跨AppDomain代理

本文关键字:代理 AppDomain 和跨 Autofac | 更新日期: 2023-09-27 18:26:47

我正在尝试向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()呼叫中,我得到:

争论异常

类型"System.MarshalByRefObject"不可分配给服务"Treadmarks.Core.ServiceBase.IServiceHost".

但是,host肯定是一个IServiceHost,因为它不是null,而且它来自强类型方法参数。

有人能解释一下我如何正确注册代理吗?

Autofac和跨AppDomain代理

您应该能够将lambda与.Register()方法一起使用,而不是使用.RegisterInstance()来解决此问题。