2010-12-06 13 views
45

Ich versuche, ein generisches IRepository <> Schnittstelle zu meinem generischen Repository <> - aber es immer Null zurückgeben?Ninject + Bind generisches Repository

Ich habe wie verschiedene Dinge ausprobiert:

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

Allerdings, wenn ich in einer nicht-generische Schnittstelle und Klasse übergeben dann funktioniert es wie ein Traum?

Antwort

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

Dies ist die korrekte Syntax ein offenes generic für die Bindung.

Wenn Sie beim Anfordern von IRepository < von was auch immer> null zurückgeben, kann es in einem Codebereich, den Sie nicht freigegeben haben, ein anderes Problem geben.

+0

Perfekt! - Ja, du hattest Recht. Mein Repository Constructor war abhängig von einer Schnittstelle - Ich habe jetzt auch die Schnittstelle meines Repositories gebunden und es funktioniert! - Vielen Dank. – ebb

+5

@qes Was wäre die Syntax, wenn IRepository mehr als ein Typargument benötigt (d. H. 'IRepository '). Bitte lesen Sie http://stackoverflow.com/q/6740992/88709 Danke. –

2

Siehe meine Antwort auf MVC3 Controller constructor + Ninject.

Generische Bindung funktioniert in Ninject korrekt. Verwenden Sie einen parameterlosen Konstruktor im Repository. Ich denke, das Problem ist da.

Verwandte Themen