Как мне взаимодействовать с UserService через класс класса MembershipProvider? Я не знаю, как передать строку подключения в пользовательский репозиторий внутри службы.ASP.NET MVC MembershipProvider с репозиторием и ninject
Это как структурировано мое приложение:
Repository (конструктор в реализации принимает строку подключения)
public interface IUserRepository
{
IQueryable<User> GetUsers();
IQueryable<UserRole> GetUserRoles();
void InsertUser(User user);
}
Service (Конструктор принимает хранилище пользователя)
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.
}
}
возможно дубликат [Вводить хранилище для настраиваемого поставщика членства с Ninject ] (http://stackoverflow.com/questions/5596441/inject-repository-to-custom-membership-provider-with-ninject) –
См. http: // stackoverflow.com/a/10394860/11635 - Я думаю, что решение Remo не получает достаточной прессы, и я очень не впечатлен ответами на этот вопрос, который по какой-то причине является самым высоким рейтингом google. Поймите, что это не намного более новое, что делает меня менее уверенным в том, что вы хотите, чтобы это было dup. Они оба плохие, я считаю! –