我正在尝试使用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()来解决此问题.