C# · Essencial · Inglês · Técnico
interface
Contrato que declara membros sem implementação (e, desde o C# 8, opcionalmente com implementação padrão). Classes e structs o implementam, permitindo trocar implementações.
Onde usar
Aparece na injeção de dependência, onde o código depende de IRepositorio e não da classe concreta. Por convenção o nome começa com I, e isso facilita criar fakes em testes.
Em código
interface IHora { DateTime Agora { get; } }
class Real : IHora
{
public DateTime Agora => DateTime.Now;
}Exemplos
The service depends on an interface, not the class.
O serviço depende de uma interface, não da classe.
Extract an interface so we can mock it in tests.
Extraia uma interface para podermos fazer mock nos testes.
Cuidado
Não crie uma interface para cada classe por reflexo: sem mais de uma implementação ou necessidade de teste, ela só adiciona indireção.
Sinônimos
contrato