6

W MKOl co ma ResolveAll zrobić ?? Wiem, że oficjalna odpowiedź brzmi: "Rozwiąż wszystkie prawidłowe komponenty pasujące do tego typu". Czy to oznacza, że ​​zwróci dowolną klasę, która implementuje dany interfejs?Whats ResolveAll zrobić

+0

Co oznacza skrót IOC w tym kontekście? –

Odpowiedz

1

Zwróci wszystkie klasy, które były zarejestrowane dla danego interfejsu.

10

To zwróci wszystkie klasy, które zostały zarejestrowane dla danego interfejsu.

... i nie czekają na wszelkich odniesień do rozwiązania. To mnie dzisiaj boli!

+0

+1 za ważny warunek :) –

+2

Nie ** dokładnie ** prawda. Zwróci komponenty zarejestrowane w danej usłudze i wszelkie inne usługi do przypisania. Więc jeśli poprosić o 'container.ResolveAll ();' będzie również zwracać usług zarejestrowanych jako 'IControllerWithCache' –

+2

Również stan wspomniałeś jest zmieniana w v2.5. W wersji 2.5 Windsor spróbuje rozwiązać komponenty, które czekają na zależności (jeśli zależności są wbudowane, lub np. 'DynamicParameters'). Tylko wtedy, gdy próba się nie powiedzie, zignoruje komponent i przejdzie do następnego. –

2

W Unity, ResolveAll rozpatruje każde zarejestrowane mapowanie dla interfejsu z wyjątkiem dla domyślnego mapowania.

więc jeśli jesteś zarejestrowany:

container.RegisterType<IInterface, ActualClassOne>(new ContainerControlledLifetimeManager()); 
container.RegisterType<IInterface, ActualClassOne>("Singleton", new ContainerControlledLifetimeManager()); 
container.RegisterType<IInterface, ActualClassOne>("Trans", new TransientLifetimeManager()); 

ResolveAll() będzie tylko daje IEnumerable zawierającą rozwiązany "Singleton" i "trans" mapowania

+4

Dlaczego, do diabła, to robimy? To zawsze mnie irytowało. #Unity #Fail – RhysC

+0

Subtelne zachęcanie do korzystania z mapowania bez nazwy? – LukeN

+0

Ahem .. pytanie dotyczyło Castle-Windsor :) Tak czy inaczej, to dość ważna informacja. Może rozważyć wycięcie i wklejenie jakiegoś pytania związanego z Unity? Założę się, że jest mnóstwo – quetzalcoatl

0

Jeśli mam:

kontenerów. ResolveAll (new {argumentu = coś}). w przypadku, gdy (...)

wydaje się wszystkich składników T pobiera wystąpienia z „czymś”, chociaż nie wszystkie z CO mponents pełne wypełnić klauzulę where .... kto dba o Zwolnienie tych dodatkowych składników?