Why can't I pass List<Customer> as a parameter to a method that accepts List<object>?
c#, generics
Solution
.NET does not have co-variance and contra-variance (yet).
That B derives from A doesn't imply that `List<B>` derives from `List<A>`. It doesn't. They are two totally different types.
.NET 4.0 will get limited co-variance and contra-variance.
Problem
The following code gives me this error: Cannot convert from 'System.Collections.Generic.List' to 'System.Collections.Generic.List'. How can I indicate to the compiler that Customer indeed inherits from object? Or does it just not do inheritance with generic collection objects (sending a `List<string>` gets the same error). ``` using System.Collections.Generic; using System.Windows; using System.Windows.Documents; namespace TestControl3423 { public partial class Window2 : Window { public Window2() { InitializeComponent(); List<Customer> customers = Customer.GetCustomers(); FillSmartGrid(customers); //List<CorporateCustomer> corporateCustomers = CorporateCustomer.GetCorporateCustomers(); //FillSmartGrid(corporateCustomers); } public void FillSmartGrid(List<object> items) { //do reflection on items and display dynamically } } public class Customer { public string FirstName { get; set; } public string LastName { get; set; } public string Street { get; set; } public string Location { get; set; } public string ZipCode { get; set; } public static List<Customer> GetCustomers() { List<Customer> customers = new List<Customer>(); customers.Add(new Customer { FirstName = "Jim", LastName = "Jones", ZipCode = "23434" }); customers.Add(new Customer { FirstName = "Joe", LastName = "Adams", ZipCode = "12312" }); customers.Add(new Customer { FirstName = "Jake", LastName = "Johnson", ZipCode = "23111" }); customers.Add(new Customer { FirstName = "Angie", LastName = "Reckar", ZipCode = "54343" }); customers.Add(new Customer { FirstName = "Jean", LastName = "Anderson", ZipCode = "16623" }); return customers; } } } ```