Tôi có đăng ký sauautofac trong phiên bản v2.4.5.724
builder.Register<Func<Type, IRequestHandler>>(
c => request => (IRequestHandler)c.Resolve(request));
Về cơ bản tôi đang cố gắng để đăng ký một phương pháp nhà máy mà giải quyết một thể hiện của IRequestHandler từ một loại nhất định.
Tính năng này hoạt động tốt cho đến phiên bản 2.4.3.700. Nhưng bây giờ tôi nhận được một lỗi sau ..
Không thể truy cập một đối tượng được xử lý. Tên đối tượng: 'Thao tác giải quyết này đã kết thúc. Khi đăng ký các thành phần bằng lambdas, thông số IComponentContext 'c' thành không thể lưu trữ lambda. Thay vào đó, hoặc giải quyết IComponentContext lại từ 'c' hoặc giải quyết một nhà máy sản xuất Func sau để tạo ra các thành phần sau. '.
CẬP NHẬT
Tôi đã cố gắng để hạn chế tiếp xúc autofac của phần còn lại của các dự án trong dung dịch. Nick, nhờ gợi ý, bây giờ đăng ký của tôi trông như thế này ...
builder.Register<Func<Type,IRequestHandler>>(c =>
{
var handlers = c.Resolve<IIndex<Type,RequestHandler>>();
return request => handlers[request];
});