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<int> 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<MyDerivedClass>();
//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<MyBaseClass>();
baseList.Add(new MyBaseClass{ BaseClassProperty = 10 });
baseList.Add(new MyBaseClass{ BaseClassProperty = 20 });
var derivedList = baseList.ConvertAll(x => (MyDerivedClass)x);
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKCm5hbWVzcGFjZSBBZGRpbmdSZXZlcnNlZE51bWJlcnMKewoJcHVibGljIGNsYXNzIE15RGVyaXZlZENsYXNzIDogTXlCYXNlQ2xhc3MsIElNeUludGVyZmFjZQoJewoJCXB1YmxpYyBpbnQgSW50ZXJmYWNlUHJvcGVydHkgeyBnZXQ7IHNldDsgfQoJCXB1YmxpYyBpbnQgRGVyaXZlZENsYXNzUHJvcGVydHkgeyBnZXQ7IHNldDsgfQoJCXB1YmxpYyBMaXN0PGludD4gRGVyaXZlZENsYXNzTGlzdCB7IGdldDsgc2V0OyB9Cgl9CgkKCXB1YmxpYyBjbGFzcyBNeUJhc2VDbGFzcwoJewoJCXB1YmxpYyBpbnQgQmFzZUNsYXNzUHJvcGVydHkgeyBnZXQ7IHNldDsgfQoJfQoJCglwdWJsaWMgaW50ZXJmYWNlIElNeUludGVyZmFjZQoJewoJCWludCBJbnRlcmZhY2VQcm9wZXJ0eSB7IGdldDsgc2V0OyB9Cgl9CgkKCQoJY2xhc3MgUHJvZ3JhbQoJewoJCXN0YXRpYyB2b2lkIE1haW4oKQoJCXsKCQkJLy8vLyBUaGlzIGNvZGUgd29ya3MganVzdCBmaW5lLgoJCQkvL3ZhciBkZXJpdmVkTGlzdCA9IG5ldyBMaXN0PE15RGVyaXZlZENsYXNzPigpOwoJCQkvL2Rlcml2ZWRMaXN0LkFkZChuZXcgTXlEZXJpdmVkQ2xhc3MgeyBCYXNlQ2xhc3NQcm9wZXJ0eSA9IDEwLCBEZXJpdmVkQ2xhc3NQcm9wZXJ0eSA9IDIwLCBJbnRlcmZhY2VQcm9wZXJ0eSA9IDMwIH0pOwoJCQkvL2Rlcml2ZWRMaXN0LkFkZChuZXcgTXlEZXJpdmVkQ2xhc3MgeyBCYXNlQ2xhc3NQcm9wZXJ0eSA9IDIwLCBEZXJpdmVkQ2xhc3NQcm9wZXJ0eSA9IDQwLCBJbnRlcmZhY2VQcm9wZXJ0eSA9IDYwIH0pOwoJCQkvL3ZhciBiYXNlTGlzdCA9IGRlcml2ZWRMaXN0LkNvbnZlcnRBbGwoeCA9PiAoTXlCYXNlQ2xhc3MpeCk7CgkJCQoJCQkvLyBUaGlzIGNvZGUgYnJlYWtzIHdoZW4gQ29udmVydEFsbCgpIGlzIGNhbGxlZC4KCQkJdmFyIGJhc2VMaXN0ID0gbmV3IExpc3Q8TXlCYXNlQ2xhc3M+KCk7CgkJCWJhc2VMaXN0LkFkZChuZXcgTXlCYXNlQ2xhc3N7IEJhc2VDbGFzc1Byb3BlcnR5ID0gMTAgfSk7CgkJCWJhc2VMaXN0LkFkZChuZXcgTXlCYXNlQ2xhc3N7IEJhc2VDbGFzc1Byb3BlcnR5ID0gMjAgfSk7CgkJCXZhciBkZXJpdmVkTGlzdCA9IGJhc2VMaXN0LkNvbnZlcnRBbGwoeCA9PiAoTXlEZXJpdmVkQ2xhc3MpeCk7CgkJfQoJfQp9