Подтвердить что ты не робот

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

Сценарий:

Я использую ASP.NET MVC 3 и С#. У меня есть много услуг, которые имеют метод 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().

Вопросы:

  • Почему?

  • Нужно ли забывать о наследовании интерфейсов от интерфейсов и просто вводить в каждом определении интерфейса метод Init()?

Примечание:

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

4b9b3361

Ответ 1

В цепочке наследования я сделал несколько немых вещей, слишком много и слишком тупые, чтобы подробно остановиться здесь. Действительная точка заключается в том, что она работает, что было неправильно, это цепочка.

Когда я посмотрел на MSDN, не было простого примера этой простой методики для резервного копирования моего понимания, не говоря уже о реальной документации такого типа использования наследования с интерфейсами.