¿Puedo probar si un tipo se ha registrado en un contenedor de Unity sin solicitar una resolución y atrapar la excepción?Comprobando si se ha registrado un tipo en Unity
Respuesta
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).
Su única otra opción (actualmente) es usar ResolveAll<T>()
y enumerar los resultados.
Sospecha que sí, gracias – johnc
- 1. Comprobando si se ha registrado un nombre de dominio
- 2. Comprobación de si un convertidor ya se ha registrado
- 3. detectar si una clase OCX se ha registrado en Windows
- 4. Comprobando si se ha definido una variable de conveniencia gdb
- 5. Validador de identificación no se ha registrado
- 6. ¿Cómo resuelve Unity los tipos que no se han registrado?
- 7. Comprobando si un cierto tipo es un delegado de Acción
- 8. Comprobando si se define un símbolo
- 9. Comprobando si una anotación es de un tipo específico
- 10. java.lang.IllegalStateException: no se encontró WebApplicationContext: no se ha registrado ContextLoaderListener?
- 11. No se encontró WebApplicationContext: no se ha registrado ContextLoaderListener?
- 12. C# - comprobando si se inicializa una variable
- 13. comprobando si se compiló un binario con "-static"
- 14. Comprobando si el objeto es de tipo genérico en C#
- 15. comprobando si se define un método en la clase
- 16. JUnit: comprobando si se llama un método nulo
- 17. Comprobando si la solicitud se ha vuelto a publicar en PHP
- 18. En Unity, ¿es posible resolver un tipo desde su alias de tipo?
- 19. Comprobando si jquery se carga usando Javascript
- 20. Comprobando si una variable es del tipo de datos double
- 21. ¿Cómo puedo saber si otra aplicación ha registrado un canal de IPC Remoting?
- 22. ¿Cómo ver qué se ha registrado en git, pero no se ha confirmado en svn mediante dcommit?
- 23. Comprobando si es nulo
- 24. ¿Cómo saber si un archivo de Scala modificado con IntelliJ Idea se guarda y si está registrado en CVS?
- 25. Comprobando si un archivo se abrió correctamente con ifstream
- 26. Comprobando si el objeto es del mismo tipo
- 27. Magento - Comprobando si un administrador y un cliente están conectados
- 28. ¿Por qué el retorno de la unidad misma instancia si el tipo se ha registrado en contra de dos interfaces diferentes pero con un solo como ContainerControlledLifeTimeManager
- 29. comprobando si existe o no un paquete
- 30. Comprobando si un número complejo tiene NaN
Gracias por la actualización. – johnc