Интерфейсы, наследуемые от базового интерфейса

Сценарий:

Я использую ASP.NET MVC 3 и C #. У меня много сервисов, у всех есть метод Init ().

Итак, подумал я, наследство - мой новый лучший друг. Я пробовал унаследовать интерфейсы от других интерфейсов.

Однако у меня возникают проблемы.

Что я сделал:

Насколько я понимаю, один интерфейс может наследовать от другого интерфейса. то есть вы можете сделать это:

public interface ICaseService : IBaseService
{
    CaseViewModel ViewModel { get; }

    Case Case { get; set; }
}

Где:

public interface IBaseService
{
    void Init();
}

Итак, когда я получаю CaseService от ICaseService, мне придется реализовать метод Init () , а также свойство Case и свойство ViewModel .

Проблема:

Допустим, у меня теперь есть контроллер, который ссылается на ICaseService:

private readonly ICaseService service;

В своих действиях, я думаю, я смогу сделать:

public virtual ActionResult MyAction()
{
    service.Init();
}

Но я получаю сообщение об ошибке, в котором говорится, что ICaseService 'не содержит определения для' Init () .

Вопросы:

  1. Почему?

  2. Должен ли я забыть о наследовании интерфейсов от интерфейсов и просто вводить в каждое определение интерфейса метод Init () ?

Примечание:

] Выше приведен упрощенный сценарий. Мой «базовый» интерфейс содержит гораздо больше определений, чем просто Init ().

23
задан gitsitgo 14 March 2017 в 17:36
поделиться