using System; using System.Collections.Generic; namespace AddingReversedNumbers { public class MyDerivedClass : MyBaseClass, IMyInterface { public int InterfaceProperty { get; set; } public int DerivedClassProperty { get; set; } public List DerivedClassList { get; set; } } public class MyBaseClass { public int BaseClassProperty { get; set; } } public interface IMyInterface { int InterfaceProperty { get; set; } } class Program { static void Main() { //// This code works just fine. //var derivedList = new List(); //derivedList.Add(new MyDerivedClass { BaseClassProperty = 10, DerivedClassProperty = 20, InterfaceProperty = 30 }); //derivedList.Add(new MyDerivedClass { BaseClassProperty = 20, DerivedClassProperty = 40, InterfaceProperty = 60 }); //var baseList = derivedList.ConvertAll(x => (MyBaseClass)x); // This code breaks when ConvertAll() is called. var baseList = new List(); baseList.Add(new MyBaseClass{ BaseClassProperty = 10 }); baseList.Add(new MyBaseClass{ BaseClassProperty = 20 }); var derivedList = baseList.ConvertAll(x => (MyDerivedClass)x); } } }