Trong một dự án WPF mới (VS2010), tôi sử dụng Unity 2 lần đầu tiên. Trong dự án này tôi sử dụng cấu trúc sau:Cách giải quyết sử dụng Unity trong giải pháp đột biến dự án
Giải pháp
WPF Dự án
Lớp library1
Lớp Library2
Class Library 3 ....
Đăng ký các loại khác nhau bằng cách sử dụng Unity được thực hiện trong Dự án WPF bằng cách sử dụng đoạn mã sau:
IUnityContainer container = new UnityContainer()
.RegisterType<IObjectContext, ObjectContextAdapter>()
.RegisterType<IConnectionStringProvider, ConnectionStringProvider>()
.RegisterType(typeof(IRepository<>), typeof(Repository<>));
Bây giờ hãy nói rằng tôi muốn nhận được Kho lưu trữ <Orders
> giải pháp được xây dựng trong Thư viện lớp1. Rõ ràng container không được biết đến trong các dự án khác!
Tôi làm như thế nào?
Giả sử tôi có một hộp thoại trong Thư viện lớp 1 có tên là "Quản lý người dùng". Làm thế nào để ManageUser nhận được cá thể của container được khai báo trong dự án WPF? –
@Ryan - Có lý do nào để sử dụng giao diện trong một dự án chung không? Tại sao không làm cho lớp Registry và Configure method cả static và gọi nó như vậy: 'RegistryForSomeClassLibrary.Configure (container); RegistryForAnotherClassLibrary.Configure (vùng chứa); 'Tôi đã thử nghiệm nó và nó hoạt động. Tui bỏ lỡ điều gì vậy? – Shevek
@Shevek, Điều đó hoạt động tốt. Tôi đã từng giải quyết các đăng ký của mình bằng cách sử dụng sự phản chiếu nhưng đã từ bỏ điều đó một thời gian. Bây giờ tôi gọi một cách rõ ràng 'Configure()' trên mỗi đăng ký. – Ryan