2009-01-25 19 views

Respuesta

12

Unity 2.0 tendrá un método IsRegistered que puede usar para averiguar si se ha registrado un tipo en el contenedor.

El Beta1 de Unity 2.0 está disponible en Codeplex a partir del 10 de febrero. Vea las notas de la versión y descárguelo aquí; http://unity.codeplex.com/wikipage?title=Unity2%20Beta1

ACTUALIZACIÓN:

descargado y probado Unidad 2.0 beta 1 27o el feb de 2010, y es por una producción muy listo todavía. Si está utilizando Unity 1.2 hoy, tendrá que hacer un trabajo importante para que funcione Unity 2.0 debido a la interfaz incompleta (?) IUnityContainer. Así que si usted quiere tener el método IsRegistered de trabajo hoy en día, usted puede hacer un método de extensión de esta manera:

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

Tenga en cuenta que no estoy usando ResolveAll aquí. La razón de esto es que ResolveAll no devolverá el valor predeterminado de registro (sin nombre) como se indica en la documentación de la unidad:

Este método es útil si ha registrado varios tipos con el mismo tipo pero con diferentes nombres.

Tenga en cuenta que este método NO devuelve una instancia para el registro predeterminado (sin nombre).

+0

Gracias por la actualización. – johnc

2

Su única otra opción (actualmente) es usar ResolveAll<T>() y enumerar los resultados.

+0

Sospecha que sí, gracias – johnc

Cuestiones relacionadas