Definir um método com uma interface como parâmetro

Concluído

Em C#, as interfaces estabelecem um contrato para classes. Nesta unidade, você explora como os métodos aceitam interfaces como parâmetros, aprende a sintaxe para definir esses métodos e revisa um exemplo prático de implementação.

Métodos que aceitam uma interface

Seus métodos em C# podem aceitar interfaces como parâmetros para garantir que os objetos passados adiram a contratos específicos. O uso de interfaces como parâmetros permite um código mais flexível e reutilizável.

Por exemplo, considere um método que aceita uma IAnimal interface como parâmetro:

public interface IAnimal
{
    void MakeSound();
}

public void MakeAnimalSound(IAnimal animal)
{
    animal.MakeSound();
}

Neste exemplo, o MakeAnimalSound método aceita uma IAnimal interface, garantindo que qualquer objeto passado para ele tenha um MakeSound método.

Observação

O uso de interfaces como parâmetros de método promove acoplamento solto e melhora a testabilidade.

Exemplo: interfaces como parâmetros de método

No exemplo a seguir, temos vários arquivos, cada um contendo uma classe ou interface diferente. É comum colocar itens em arquivos separados para melhor organização e legibilidade.

IAnimal.cs

O IAnimal.cs arquivo define a IAnimal interface, que inclui um método MakeSound.

public interface IAnimal
{
    void MakeSound();
}

Dog.cs e Cat.cs

Esses arquivos contêm as Dog classes e Cat , que implementam a IAnimal interface e fornecem o MakeSound método.

public class Dog : IAnimal
{
    public void MakeSound()
    {
        Console.WriteLine("Woof!");
    }
}

public class Cat : IAnimal
{
    public void MakeSound()
    {
        Console.WriteLine("Meow!");
    }
}

AnimalSound.cs

Esse arquivo contém a AnimalSound classe, que tem um método MakeAnimalSound que aceita uma IAnimal interface como parâmetro e chama o MakeSound método.

public class AnimalSound
{
    public void MakeAnimalSound(IAnimal animal)
    {
        animal.MakeSound();
    }
}

Program.cs

Esse arquivo contém a Program classe com o Main método, que cria instâncias de Dog e Cate e usa a AnimalSound classe para fazê-los produzir sons.

public class Program
{
    public static void Main()
    {
        IAnimal dog = new Dog();
        IAnimal cat = new Cat();
        
        AnimalSound animalSound = new AnimalSound();
        animalSound.MakeAnimalSound(dog); // Output: Woof!
        animalSound.MakeAnimalSound(cat); // Output: Meow!
    }
}

Este exemplo demonstra como as interfaces podem ser usadas como parâmetros de método, promovendo acoplamento flexível e melhorando a estabilidade. É uma maneira simples, mas eficaz, de entender o conceito de interfaces em C#.