W nowym projekcie WPF (VS2010) używam Unity 2 po raz pierwszy. W tym projekcie używam następującą strukturę:Jak rozwiązywać problemy przy użyciu Unity w rozwiązaniu z wieloma projektami
rozwiązanie
WPF Projekt
Klasa Library1
Klasa Library2
Class Library 3 ....
rejestracji różne typy wykorzystujące Unity są wykonywane w Projekcie WPF przy użyciu następującego fragmentu:
IUnityContainer container = new UnityContainer()
.RegisterType<IObjectContext, ObjectContextAdapter>()
.RegisterType<IConnectionStringProvider, ConnectionStringProvider>()
.RegisterType(typeof(IRepository<>), typeof(Repository<>));
Załóżmy teraz, że chciałbym, aby repozytorium <Orders
> constructor-injected zostało rozwiązane w bibliotece Class1. Najwyraźniej kontener nie jest znany w innych projektach!
Jak to zrobić?
Załóżmy, że mam okno dialogowe w bibliotece klas 1 o nazwie "ManageUser". W jaki sposób ManageUser pobiera wystąpienie kontenera zadeklarowanego w projekcie WPF? –
@Ryan - Czy jest jakiś powód, aby używać interfejsu we wspólnym projekcie? Dlaczego nie uczynić klasy Registry i Configure zarówno statyczną, jak i wywołać w ten sposób: 'RegistryForSomeClassLibrary.Configure (container); RegistryForAnotherClassLibrary.Configure (kontener); 'Testowałem to i działa. Czy czegoś brakuje? – Shevek
@Shevek, To działa dobrze. Kiedyś rozwiązywałem swoje rejestry, korzystając z refleksji, ale zrezygnowałem z tego czasu. Teraz jawnie nazywam 'Configure()' na każdym rejestrze. – Ryan