Сценарий:
Я использую 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()
.
Вопросы:
Почему?
Должен ли я забыть о наследовании интерфейсов от интерфейсов и просто ввести в каждом определении интерфейса метод Init()
?
Примечание:
Выше приведен упрощенный сценарий. Мой «базовый» интерфейс содержит гораздо больше определений, чем просто Init ().