using System;
public class Test
{
class Base {
}
class Derived : Base {
public string X {get;set;}
}
public static void Main()
{
Func<Derived,object> original = d => d.X;
Func<Base,object> converted = b => original((Derived)b);
Base obj = new Derived {X = "hello"};
Console.WriteLine(converted(obj));
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewoJY2xhc3MgQmFzZSB7Cgl9CgljbGFzcyBEZXJpdmVkIDogQmFzZSB7CgkJcHVibGljIHN0cmluZyBYIHtnZXQ7c2V0O30KCX0KCQoJCgkKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQlGdW5jPERlcml2ZWQsb2JqZWN0PiBvcmlnaW5hbCA9IGQgPT4gZC5YOwoJCUZ1bmM8QmFzZSxvYmplY3Q+IGNvbnZlcnRlZCA9IGIgPT4gb3JpZ2luYWwoKERlcml2ZWQpYik7CgkJQmFzZSBvYmogPSBuZXcgRGVyaXZlZCB7WCA9ICJoZWxsbyJ9OwoJCUNvbnNvbGUuV3JpdGVMaW5lKGNvbnZlcnRlZChvYmopKTsKCX0KfQ==