2010-12-06 10 views
45

Estoy tratando de enlazar una interfaz genérica de IRepository <> con mi Repositorio genérico <> - ¿pero siempre devuelve nulo?Repositorio genérico Ninject + Bind

he intentado varias cosas como:

Bind(typeof(IRepository<CustomerModel>)).To(typeof(Repository<CustomerModel>)); 
Bind(typeof(IRepository<>)).To(typeof(Repository<>)); 

Sin embargo si paso en una interfaz no genérica y la clase entonces funciona como un sueño?

Respuesta

75
Bind(typeof(IRepository<>)).To(typeof(Repository<>)); 

Ésta es la sintaxis correcta para la unión de un genérico abierta.

Si recibe nulo de nuevo al solicitar IRepository < de lo que sea>, entonces puede haber algún otro problema en un área de código que no ha compartido.

+0

¡Perfecto! - Sí, tenías razón. El consturctor de mi repositorio dependía de una interfaz: ahora también he enlazado la interfaz utilizada por mi repositorio y ¡funciona! - Gracias. – ebb

+5

@qes ¿Cuál sería la sintaxis si IRepository toma más de un argumento de tipo (es decir, 'IRepository '). Por favor, consulte http://stackoverflow.com/q/6740992/88709 Gracias. –

2

Ver mi respuesta en MVC3 Controller constructor + Ninject.

El enlace genérico funciona correctamente en Ninject. Intenta usar un constructor sin parámetros en Repository. Creo que el problema está ahí.

Cuestiones relacionadas