Covariance issue solve – one more example

				
					namespace Covariance
{
    class Employee
    {
        public int Id { get; set; }
        public void DisplayEmployees(List<Object> employees)
        {
            employees.ForEach(emp =>
            {
                Console.WriteLine(emp);
            });
        }
    }   
}

				
			
				
					
using Covariance;
Employee emp= new Employee();
emp.DisplayEmployees(new List<Employee> { new Employee() { Id=1}, new Employee() { Id = 2 } });

				
			

emp.DisplayEmployees(new List<Employee> { new Employee() { Id=1}, new Employee() { Id = 2 } });

				
					
using Covariance;
Employee emp= new Employee();
emp.DisplayEmployees(new List<Employee> { new Employee() { Id=1}, new Employee() { Id = 2 } });
    
				
			
				
					namespace Covariance
{
    class Employee
    {
        public int Id { get; set; }
        public void DisplayEmployees(IEnumerable<Object> employees)
        {
            foreach (var item in employees)
            {
                Console.WriteLine(item);
            }
        }
    }   
}

				
			
  • List<Object> x= new List<Employee>();
  • This violates covariance.
  • IEnumerable takes care of covariance

           public void DisplayEmployees(IEnumerable<Object> employees)

Leave a Comment