Lector de primera vez escritor por primera vez aquí. Actualmente estoy llevando a cabo una conversión desde el uso de Ninject hasta el lanzamiento actual de Castle Windsor para una simple aplicación C# .NET.Castle Windsor: Problema con varios constructores
En su mayor parte, la conversión ha ido bien y la implementación de los contenedores se ha ejecutado sin problemas. Sin embargo, tengo un pequeño problema con mis objetos de repositorio.
que tienen un objeto repositorio de usuarios que se codifica de la siguiente manera:
public class UserRepository : IUserRepository {
public UserRepository(IObjectContext objectContext) {
// Check that the supplied arguments are valid.
Validate.Arguments.IsNotNull(objectContext, "objectContext");
// Initialize the local fields.
ObjectContext = objectContext;
}
public UserRepository(IObjectContextFactory factory)
: this(factory.CreateObjectContext()) {
}
// -----------------------------------------------
// Insert methods and properties...
// -----------------------------------------------
}
Para corresponder a este código, he fijado las siguientes entradas en el archivo de configuración de mi solicitud:
<castle>
<components>
<component id="objectContextFactory" lifestyle="custom"
customLifestyleType="Common.Infrastructure.PerWebRequestLifestyleManager, Common.Castle"
service="Project.DAL.Context.IObjectContextFactory, Project.DAL.LINQ"
type="project.DAL.Context.ObjectContextFactory, Project.DAL.LINQ">
</component>
<component id="userRepository" lifestyle="custom"
customLifestyleType="Common.Infrastructure.PerWebRequestLifestyleManager, Common.Castle"
service="Project.BL.Repository.IUserRepository, Project.BL"
type="Project.BL.Repository.UserRepository, Project.BL.LINQ">
<parameters>
<factory>${objectContextFactory}</factory>
</parameters>
</component>
</components>
</castle>
Para mí, todo parece que debería. Cuando intento resolver una instancia del servicio IObjectContextFactory, recupero un objeto ObjectContextFactory. Mi problema aparece cuando intento resolver una instancia del servicio IUserRepository. Me tratan las siguientes deliciosas excepciones:
No se puede crear el componente 'userRepository' ya que tiene dependencias que cumplir. userRepository está esperando por las siguientes dependencias:
Servicios:
- SandCastle.DAL.Context.IObjectContext which was not registered.
He intentado todo lo que puedo pensar en esto. Entonces, para ustedes lectores de stackoverflow, les digo: ¿tengo alguna idea?
Trabajado como frenética! ¡Gracias! – highvoltage
"Windsor intenta hacer coincidir el constructor más codicioso (uno con la mayoría de los parámetros que puede satisfacer)". Creo que es más correcto decir "de la lista de constructores que solo contienen parámetros resolubles, se selecciona el constructor con más parámetros". – Steven
@Steven ¿y ahora? –