Имея интерфейс и DI - Не уверены, использовать или нет? ..Asp.Net MVC 3 - PullRequest
0 голосов
/ 13 сентября 2011

У меня есть репозиторий, интерфейс, контроллер .... это выглядит примерно так ...

Интерфейс - IUSer

public interface IUserRepositories
    {
       bool CreateUser(User newUser);

       bool CheckUniqueEmail(string Email);

       bool CheckUserLoginDetails(string email, string password); 
    }

User Repository
=============
which is implementing all the methods ..

1) CreateUSer
2) CheckLoginDetails
3) CheckUniqueEmail

Контроллер - Не уверен, что он делает ...

private IUserRepositories _userRepo;

        public UserController() : this(new UserRepositories())
        {
        }

        public UserController(IUserRepositories userRepo)
        {
            this._userRepo = userRepo;
        }

Это выглядит нормально ... если да ... какую выгоду я могу получить, внедрив этот способ ...

Пожалуйста, объясните ... путаница за последние 3 часа ....

Спасибо ...

1 Ответ

1 голос
/ 13 сентября 2011

Это выглядит нормально

Почти. То, что у вас есть, часто называют DI бедного человека . Правильный путь следующий (обратите внимание, что конструктор по умолчанию был удален):

private IUserRepositories _userRepo;
public UserController(IUserRepositories userRepo)
{
    this._userRepo = userRepo;
}

Преимущество такого использования инверсии управления в том, что ваш контроллер слабо связан с хранилищем, что упрощает модульное тестирование в отдельности и делает различные уровни вашего приложения более пригодными для повторного использования и обслуживания.

Удаляя конструктор по умолчанию, вы четко указываете потребителям данного класса, что этот класс зависит и требует хранилище, которое должно реализовывать данный контракт (интерфейс). Это делает ваш код автоматически автоматически документированным для потребителя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...