Tôi đang sử dụng Unity của Microsoft cho dependency injection và tôi muốn làm một cái gì đó như thế này:Tôi có thể chuyển các tham số hàm tạo cho phương thức Resolve() của Unity không?
IDataContext context = _unityContainer.Resolve<IDataContext>();
var repositoryA = _unityContainer.Resolve<IRepositoryA>(context); //Same instance of context
var repositoryB = _unityContainer.Resolve<IRepositoryB>(context); //Same instance of context
IDataContext context2 = _unityContainer.Resolve<IDataContext>(); //New instance
var repositoryA2 = _unityContainer.Resolve<IRepositoryA>(context2);
RepositoryA
và RepositoryB
cả hai đều có một constructor mà phải mất một tham số IDataContext
, và tôi muốn Unity để khởi tạo kho lưu trữ với bối cảnh tôi vượt qua nó. Cũng lưu ý rằng IDataContext
không được đăng ký với Unity (Tôi không muốn 3 phiên bản IDataContext
).
Xem thêm http://stackoverflow.com/questions/2813322/unity-2-0-how-to-use -resolve-with-resolveroverride –
liên kết http://unity.codeplex.com/SourceControl/changeset/view/33899 không hoạt động –
"Lớp 'Microsoft.Practices.Unity.ParameterOverrides' không có thông số loại". Tôi đang sử dụng Unity 3.5; mã này chỉ hợp lệ cho phiên bản cũ của Unity? –