c# – 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

The type ‘System.MarshalByRefObject’ is not assignable to service ‘Treadmarks.Core.ServiceBase.IServiceHost’.

但是,host绝对是一个IServiceHost,因为它不是null,而是来自一个强类型的方法参数.

任何人都可以解释我如何正确注册代理?

最佳答案 您应该能够使用带有.Register()方法的lambda而不是.RegisterInstance()来解决此问题.

点赞