ASP.NET MVC MembershipProvider с репозиторием и ninject

Как мне связаться с UserService через закрытый класс MembershipProvider? Я понятия не имею, как передать строку подключения в пользовательский репозиторий внутри службы.

Вот как устроено мое приложение:

Репозиторий (конструктор в реализации принимает строку подключения)

public interface IUserRepository
{
    IQueryable<User> GetUsers();
    IQueryable<UserRole> GetUserRoles();
    void InsertUser(User user);
}

Служба (Конструктор принимает пользовательский репозиторий)

public interface IUserService
{
    User GetUser(int userId);
    User GetUser(string email);
}

UserController (Пример моего контроллера)

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 (Это вот где моя проблема)

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.
     }
}
7
задан Shawn Mclean 11 October 2010 в 17:05
поделиться