it-swarm-pt.tech

Interfaces que herdam de uma interface base

Cenário:

Estou usando o asp.net MVC 3 e c #. Eu tenho muitos serviços que todos têm um método Init ().

Então, pensei, herança é minha nova melhor amiga. Eu tentei herdar interfaces de outras interfaces.

No entanto, estou tendo problemas.

O que eu fiz:

Pelo que entendi, uma interface pode herdar de outra interface. ou seja, você pode fazer isso:

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

    Case Case { get; set; }
}

Onde:

public interface IBaseService
{
    void Init();
}

Portanto, quando derivar CaseService do ICaseService, terei que implementar o método Init(), bem como a propriedade Case e a propriedade ViewModel.

O problema:

Vamos dizer que agora tenho um controlador que tem uma referência ao ICaseService:

private readonly ICaseService service;

Em minhas ações, acho que devo ser capaz de:

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

Mas recebo uma mensagem de erro informando que ICaseService 'não contém uma definição para' Init().

Questões:

  1. Por quê?

  2. Preciso esquecer a herança de interfaces e digitar em cada definição de interface o método Init()?

Nota:

O acima é um cenário simplificado. Minha interface "base" contém muito mais definições do que apenas Init ().

23
awrigley

Na cadeia de herança, fiz várias coisas idiotas, muitas e idiotas demais para detalhar aqui. O ponto válido é que funciona, o que estava errado era a cadeia.

Quando procurei no MSDN, não havia um exemplo simples dessa técnica simples para fazer backup do meu entendimento, muito menos de qualquer documentação real desse tipo de uso de herança com interfaces.

11
awrigley