Ninject + Bind generic repository
Asked Answered
T

2

48

I'm trying to Bind a generic IRepository<> interface to my generic Repository<> - however it always return null?

I have tried various things like:

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

However if I pass in a non-generic interface and class then it works like a dream?

Truthvalue answered 6/12, 2010 at 20:13 Comment(0)
E
83
Bind(typeof(IRepository<>)).To(typeof(Repository<>));

This is the correct syntax for binding an open generic.

If you are receiving null back when requesting IRepository< of whatever >, then there may be some other problem in an area of code you haven't shared.

Enervate answered 6/12, 2010 at 20:21 Comment(2)
Perfect! - Yes you were right. My Repository consturctor depended on a Interface - I now also have binded the Interface used by my Repository and it works! - Thanks.Truthvalue
@qes What would be the syntax if IRepository takes more than one type argument (i.e. IRepository<T,U>). Please see https://mcmap.net/q/547600/-ninject-how-to-bind-an-open-generic-with-more-than-one-type-argument/88709 Thanks.Kudva
C
3

See my answer on MVC3 Controller constructor + Ninject.

Generic Binding works correctly in Ninject. Try using a parameterless constructor in Repository. I think the problem is there.

Corves answered 6/12, 2010 at 20:22 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.