Сценарий:
Я использую 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().