I am working on asp.net mvc 4. I am trying to implement dependeny injection using ninject and repository pattern with code first model.
IMessageRepository
public interface IMessageRepository
{
void IsMessageRead();
}
MessageRepository
public class MessageRepository:IMessageRepository
{
string id="";
public MessageRepository(string idparam)
{
id=idparam;
}
EFMsgContext context=new EFMsgContext(id);
public void IsMessageRead()
{
...
}
}
EFMsgContext
public class EFMsgContext:Dbcontext
{
public EFMsgContext(string id):base("MyContext")
{
//based on id i will construct a connection string from my database.
}
....
}
my controller
public class MYController:Controller
{
private IMessageRepository repo;
public MYController(IMessageRepository repoparam)
{
repo=repoparam;
}
public ActionResult Index()
{
repo.IsMessageRead();
}
}
and i am using Ninject for dependency injection i bind my interface with concrete class like,
ninjectKernel.Bind<IMessageRepository>().To<MessageRepository>();
here how could i pass constructor parameters to the binding and is there any way to write the logic for buidling connection string inside the ninjectcontrollerfactory. please guide me.
You have to use the
WithConstructorArgumentextension methodYou can even pass a
Funcas a second argument.