Я проектирую приложение со следующими слоями
- Уровень данных (с общим репозиторием поверх EF 4.1)
- Сервисный уровень - вся бизнес-логика идет сюда
- Веб-сайт ASP.NET MVC 3 и веб-сервисы ServiceStack.NET
Я пытаюсь реализовать пользовательский поставщик членства, чтобы использовать мои сервисы / репозитории
Хотя изначально я былдля вызова методов уровня обслуживания из провайдера, но, конечно, я не могу использовать DI (через Ninject), так как членство обрабатывается платформой и не позволяет мне использовать внедрение конструктора.
Я пытался создать экземплярэкземпляр моего класса UserService в методе initialize провайдера через:
userService = (UserService)Activator.CreateInstance(typeof(UserService));
Но, учитывая, что служба пользователя зависит от репозитория, внедряемого Ninject, это не работает, поскольку репо никогда не вводится.
Что мне здесь не хватает?Какой самый простой способ обойти эту проблему?Должен ли я прийти к этому под совершенно другим углом?
РЕДАКТИРОВАТЬ: Вот мой пользовательский сервис по запросу
public class UserService : IUserService
{
private readonly IUserRepository userRepository;
private readonly IUnitOfWork unitOfWork;
public UserService(IUserRepository userRepository, IUnitOfWork unitOfWork)
{
this.userRepository = userRepository;
this.unitOfWork = unitOfWork;
}
//methods(AddUser, etc.)...
}