Using generic method with an interface as a C# with Example



Using generic method with an interface as a C# with Example

constraint type 
This is an example of how to use the generic type TFood inside Eat method on the class Animal 
public interface IFood 
{ 
void EatenBy(Animal animal); 
} 
public class Grass: IFood 
{ 
public void EatenBy(Animal animal) 
{ 
Console.WriteLine("Grass was eaten by: {0}", animal.Name); 
} 
} 
public class Animal 
{ 
public string Name { get; set; } 
 

public void Eat(TFood food) 
where TFood : IFood 
{ 
food.EatenBy(this); 
} 
} 
public class Carnivore : Animal 
{ 
public Carnivore() 
{ 
Name = "Carnivore"; 
} 
} 
public class Herbivore : Animal, IFood 
{ 
public Herbivore() 
{ 
Name = "Herbivore"; 
} 
public void EatenBy(Animal animal) 
{ 
Console.WriteLine("Herbivore was eaten by: {0}", animal.Name); 
} 
} 
You can call the Eat method like this: 
var grass = new Grass(); 
var sheep = new Herbivore(); 
var lion = new Carnivore(); 
sheep.Eat(grass); 
//Output: Grass was eaten by: Herbivore 
lion.Eat(sheep); 
//Output: Herbivore was eaten by: Carnivore 
In this case if you try to call: 
sheep.Eat(lion); 
It won't be possible because the object lion does not implement the interface IFood. Attempting to make the above 
call will generate a compiler error: "The type 'Carnivore' cannot be used as type parameter 'TFood' in the generic 
type or method 'Animal.Eat(TFood)'. There is no implicit reference conversion from 'Carnivore' to 'IFood'." 

0 Comment's

Comment Form

Submit Comment