How do I communicate with the UserService through an overidden MembershipProvider class? I have no idea how to pass the connection string to the user repository inside the service.
This is how my app is structured:
Repository (constructor in the implementation takes a connection string)
public interface IUserRepository
{
IQueryable<User> GetUsers();
IQueryable<UserRole> GetUserRoles();
void InsertUser(User user);
}
Service (Constructor takes a user repository)
public interface IUserService
{
User GetUser(int userId);
User GetUser(string email);
}
UserController (An example of my controller)
public class UsersController : Controller
{
private IUserService userService;
public UsersController(IUserService userServ)
{
userService = userServ;
}
}
NinjectConfigurationModule
public class NinjectConfigurationModule : NinjectModule
{
public override void Load()
{
Bind<IUserService>().To<UserService>();
Bind<IUserRepository>().To<UserRepository>()
.WithConstructorArgument("connectionString", ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString
);
}
}
NinjectControllerFactory
public class NinjectControllerFactory : DefaultControllerFactory
{
private IKernel kernel = new StandardKernel(new NinjectConfigurationModule());
protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
{
// We don't want to pass null to ninject as we'll get a strange error.
return controllerType == null ? null
: (IController)kernel.Get(controllerType);
}
}
MembershipProvider (This is where my problem is)
public class SimpleMembershipProvider : MembershipProvider
{
//How do I set up User Service here so that ninject can put my connection string here.
public override bool ValidateUser(string username, string password)
{
//Code to use user service.
}
}