2010-12-06 48 views
45

J'essaie de lier un IRepository générique <> interface vers mon Repository générique <> - mais il retourne toujours null?Référentiel générique Ninject + Bind

J'ai essayé différentes choses comme:

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

Cependant, si je passe dans une interface non-générique et la classe, alors il fonctionne comme un rêve?

Répondre

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

Ceci est la syntaxe correcte pour lier un générique ouvert.

Si vous recevez une valeur nulle lors de la demande de IRepository < de quelque chose que ce soit, il se peut qu'il y ait un autre problème dans une zone de code que vous n'avez pas partagée.

+0

Parfait! - Oui tu avais raison. Mon constituteur de dépôt dépendait d'une interface - J'ai maintenant aussi lié l'interface utilisée par mon référentiel et cela fonctionne! - Merci. – ebb

+5

@qes Quelle serait la syntaxe si IRepository prenait plus d'un argument de type (c'est-à-dire 'IRepository '). S'il vous plaît voir http://stackoverflow.com/q/6740992/88709 Merci. –

2

Voir ma réponse au MVC3 Controller constructor + Ninject.

La liaison générique fonctionne correctement dans Ninject. Essayez d'utiliser un constructeur sans paramètre dans Repository. Je pense que le problème est là.