Definir um método com uma interface como parâmetro
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#.