2012-03-06 29 views
5

Tôi đang cố gắng đăng ký một proxy AppDomain chéo với Autofac.Autofac và Cross-AppDomain Proxies

Loại bê tông được đại diện bởi proxy triển khai giao diện IServiceHost. Vì vậy, proxy cũng nên, để cho phép các cuộc gọi đến proxy bằng cách sử dụng giao diện đó để làm việc.

tôi cố gắng đăng ký proxy với Autofac, bằng cách thực hiện:

void Initialize(IServiceHost host) 
{ 
    Host = host; 

    var builder = new ContainerBuilder(); 
    builder.RegisterInstance(host) 
     .As<IServiceHost>() 
     .SingleInstance(); 

    Scope = builder.Build(); 
} 

Tuy nhiên, trên builder.Build() cuộc gọi, tôi nhận được:

ArgumentException

Loại 'System.MarshalByRefObject 'không thể gán cho dịch vụ' Treadmarks.Core.ServiceBase.IServiceHost '.

Tuy nhiên, hostchắc chắn một IServiceHost, vì nó không phải là null và nó xuất phát từ một cuộc tranh luận phương pháp mạnh mẽ gõ.

Có ai có thể giải thích cách tôi có thể đăng ký proxy đúng cách không?

+0

Vì vậy, 'máy chủ lưu trữ' không triển khai' IServiceHost'? Trong trường hợp đó nó không phải là một vấn đề Autofac. – Steven

+0

@Steven Tôi đặc biệt nói rằng loại proxy * thực hiện * thực hiện 'IServiceHost' và do đó proxy phải thực hiện nó. –

+0

Autofac kiểm tra xem 'host' là một' IServiceHost' và vì nó không phải là, Autofac ném một ngoại lệ. – Steven

Trả lời

2

Bạn sẽ có thể sử dụng lambda với phương pháp .Register(), thay vì .RegisterInstance(), để giải quyết vấn đề này.

+0

Tính năng này hoạt động. Cảm ơn. –

Các vấn đề liên quan