Как создать экземпляр класса Service Layer в поставщике нестандартного членства - PullRequest
1 голос
/ 05 октября 2011

Я проектирую приложение со следующими слоями

  • Уровень данных (с общим репозиторием поверх 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.)...

}

1 Ответ

0 голосов
/ 05 октября 2011

Если вашей основной проблемой является тестирование и заставить работать ваш DI, то один из вариантов - это отобразить биты членства и создать интерфейс вне фасада.Затем вы можете настроить модульные тесты и даже использовать библиотеку контейнеров IoC (DI).

...