2010-11-22 13 views
16

Co to jest AggregateCatalog? Co to znaczy, gdy konstruujesz new AggregateCatalog()? Co to znaczy, gdy dodajesz zespoły do ​​katalogu, np. catalog.Catalogs.Add(new AssemblyCatalog(someAssembly))? Inne niż podzespoły, co możesz dodać do katalogu? przydatna byłaby również ogólna wiedza na ten temat (jestem totalnym noobem)Co to jest AggregateCatalog?

Odpowiedz

16

AggregateCatalog w MEF zasadniczo pozwala zebrać wiele katalogów rozszerzeń. Podczas wywoływania new AggregateCatalog() zasadniczo tworzysz nową kolekcję katalogu (niekoniecznie zapełnioną), która może zawierać wiele instancji ComposablePartCatalog, które mogą zawierać wiele części.

Należy uznać klasę, która pomaga zbierać części z wielu zestawów.

Złożenia to tylko sposób na popychanie części do aplikacji wywołującej. Części można przekazywać bezpośrednio z wnętrza istniejącego zespołu.

Aby uzyskać więcej informacji o katalogach, polecam lekturę this.

+1

Czy istnieje odpowiednik jedności? – Vaccano

+0

Czy mógłbyś porównać to do katalogu ModuleCatalog? Wydają się robić to samo. –

4

Mef ma małą krzywą uczenia się - przejrzyj dokumenty na mef.codeplex.com co najmniej raz. Możesz też wypróbować screencasty, jeśli naprawdę masz ochotę na czas.

Chodzi o to, że katalog jest słownikiem eksportowanych części (przedmiotów do wstrzyknięcia) lub części wymagających importu (które wymagają wstrzykniętych obiektów). Katalog można wypełnić na wiele sposobów (stąd the diff Catalog derivations) - od Katalog (wszystkie asm w katalogu) lub Specyficzny zestaw.

Następnie można utworzyć katalog złożony, np. chcesz utworzyć pojedynczy słownik zawierający wszystkie wyeksportowane obiekty z DirA iz tego konkretnego zestawu leżącego w DirB. W takim przypadku można tworzyć pojedyncze katalogi, a następnie katalog złożony, który łączy te dwa. Teraz zajmij się połączonym słownikiem w swoim kodzie, aby poprosić o import/eksport.