4

我正在尝试使用 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 并且它来自一个强类型的方法参数。

谁能解释我如何正确注册代理?

4

1 回答 1

2

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

于 2012-03-07T01:47:27.503 回答