Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Interface vazia com Herança

Ex.: Tenho uma interface IBase, que é extendida por diversas outras interfaces filhas

interface IBase {
    método1();
    método2();
}
interface IFilho1 : IBase {
    método3();
}

interface IFilho2 : IBase {
    // vazia
}

Uma das interfaces filhas não terá nenhum método, irá apenas herdar de IBase. Isso é uma boa prática? É correto fazer desta forma?

A necessidade da herança é por ter referências à essa interface filha em outras partes do código. Não criar essa interface acarretaria em referenciar diretamente a IBase, creio eu

Gostaria de saber a forma correta de implementar

2 respostas
solução!

Olá, Samuel. Tudo bom?

Isto faria sentido se você já planeja adicionar outros membros em IFilho2. Mas, além disto, não encontro outras razões.. Algo que é comum com interfaces sem membros é definir uma interface que estende mais de uma, por exemplo:

interface IFilho : IDisposable, IComparable
{
}

E então uma classe que implementa IFilho vai automaticamente implementar IDisposable e IComparable.

Outro caso comum é com interfaces genéricas - sobre tipos genéricos, você verá na parte 8 (é bastante interessante!). Por exemplo:

interface IRepositorioDeLivros : IRepositorio<Livro>
{
}

O que você acha?

Olá, samuel!

Quando nos encontramos nesta situação é de extrema importância analisar o contexto do seu código e se ele retrata a realidade do seu modelo de negócio. Se você estivesse utilizando classe eu me arriscaria a dizer que não há problema algum desde que isso reflita a sua realidade, porém eu não vejo um motivo muito claro para fazer isso com interfaces. A pergunta é a seguinte, tendo em vista que as interfaces têm o intuito final de serem implementadas, qual é o sentido de implementar um recurso vazio? No seu caso, quando você precisar implementar os métodos 1 e 2, eu não vejo problema de implementa-los utilizando a interface IBase.

Espero ter ajudado, abraços.