Usando MembershipProvider con el Castillo de Windsor

Estoy implementando Windsor Container MembershipProvider con una clase. Puedo resolver la implementación, pero no llama al método Initialize que extrae los valores de web.config. ¿Cómo puedo instanciar eso y asegurarme de que llame al método Initialize?

Código para agregar al contenedor

container.Register(Component.For<FNHMembershipProvider>()
    .LifeStyle.Transient
    .Named("myMembershipProvider"));

container.Register(Component.For<FNHRoleProvider>()
    .LifeStyle.Transient
    .Named("myRoleProvider"));

preguntado el 03 de mayo de 12 a las 20:05

1 Respuestas

Un punto clave aquí es que no está inyectando la clase de Membresía, está inyectando el PROVEEDOR de Membresía. La clase de Membresía es lo que instancia el proveedor de membresía en función de sus entradas de registro y las llamadas se inicializan. La clase de Membresía es una clase estática, y no puede inyectarla (aunque podría inyectar una clase contenedora que devuelva la clase de Membresía estática, pero no veo mucho beneficio allí).

En general, creo que es mucho más doloroso de lo que vale la pena tratar de hacer que la membresía use DI.

contestado el 03 de mayo de 12 a las 21:05

Sin embargo, tengo que usar DI según mis requisitos. Entonces, ¿crearía el contenedor, lo inyectaría en mi controlador y luego llamaría ese contenedor a GetUser, crearía un usuario, etc.? - Reacción21

Sí, ese es el camino a seguir. Supongo que ese es el enfoque que encuentra en el esqueleto de la aplicación que se envía con la plantilla VS para la aplicación mvc3. La plantilla no usa DI, pero es muy fácil averiguar cómo cambiar a DI. - Crixo

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.