2009-01-25 8 views

Odpowiedz

12

Unity 2.0 będzie mieć metodę IsRegistered, za pomocą której można się dowiedzieć, czy dany typ został zarejestrowany w kontenerze.

Beta1 Unity 2.0 jest dostępna na Codeplex od 10 lutego. Zobacz informacje o wersji i pobierz ją tutaj; http://unity.codeplex.com/wikipage?title=Unity2%20Beta1

UPDATE:

pobierane i badane Unity 2.0 beta 1 na 27 lutego 2010 roku, i to przez długi jeszcze gotowej produkcji. Jeśli używasz Unity 1.2 dzisiaj, będziesz musiał wykonać ważną pracę, aby Unity 2.0 działało z powodu niekompletnego (?) Interfejsu IUnityContainer. Więc jeśli chcesz mieć IsRegistered metodę dzisiaj pracuje, można dokonać metodę rozszerzenia takiego:

public static class UnityContainerExtensions 
{ 
    public static bool IsRegistered<T>(this IUnityContainer container) 
    { 
     try 
     { 
      container.Resolve<T>(); 
      return true; 
     } 
     catch 
     { 
      return false; 
     } 
    } 
} 

Zauważ, że nie używam ResolveAll tutaj. Powodem tego jest to, że nie powróci ResolveAll domyślne (un nazwie) rejestracji, jak określono w docs Unity:

Metoda ta jest przydatna, jeśli już zarejestrowany wiele typów tego samego typu, ale różnych nazw.

Należy pamiętać, że ta metoda NIE zwraca instancji dla domyślnej rejestracji (bez nazwy).

+0

Dzięki za aktualizację. – johnc

2

Twoja jedyna inna opcja (obecnie) to użycie ResolveAll<T>() i wyliczenie wyników.

+0

Podejrzewa się, dzięki, – johnc

Powiązane problemy