Mi comprensión actual del registro de Castle Windsor es que uno solo puede validar el registro llamando a Resolver en un componente raíz. Pero dado que el modelo de componente de windsor conoce las dependencias de cada componente, debería ser posible probar que todas las dependencias se pueden satisfacer sin instanciar realmente nada. La razón principal para querer hacer esto es tener una prueba unitaria para el registro que no requiera que reste componentes que llaman a recursos externos en la puesta en marcha.Castle Windsor: ¿hay alguna manera de validar el registro sin una decisión?
Por ejemplo. Tengo una raíz clase que tiene una dependencia en iChild:
public class Root : IRoot
{
private IChild child;
public Root(IChild child)
{
this.child = child;
}
}
Si registro Root como IRoot, pero no registro un iChild. Cuando llamo a la resolución de esta manera:
var container = new WindsorContainer().Register(
Component.For<IRoot>().ImplementedBy<Root>()
);
container.Resolve<IRoot>();
consigo un error:
MyNamespace.Root is waiting for the following dependencies:
Services:
- MyNamespace.IChild which was not registered.
¿Hay algo así como:
container.TestResolve<IRoot>();
Eso sería recorrer el grafo de dependencias y comprobar que todas las dependencias pueden estar satisfecho, pero que en realidad no instancia nada?
agradable método de ensayo :) – bevacqua
este código ya no compila: El tipo 'Castle.Windsor.Diagnostics.IPotentiallyMisconfiguredComponentsDiagnostic' no se puede utilizar como parámetro de tipo 'TDiagnostic' en el tipo genérico o método 'Castle.Windsor .Diagnostics.IDiagnosticsHost.GetDiagnostic() '. No hay conversión de referencia implícita de 'Castle.Windsor.Diagnostics.IPotentiallyMisconfiguredComponentsDiagnostic' a 'Castle.Windsor.Diagnostics.IDiagnostic
Peri, el código compila para mí, Castle 3.2 en .net 4 – samy