using System;
using System.Linq;
using System.Reflection;
public class Test
{
public static void Main()
{
var derived = new Derived();
var baseType = derived.GetType().BaseType;
var classCField = baseType.GetField("_classC", BindingFlags.NonPublic | BindingFlags.Instance);
Console.WriteLine(classCField.GetValue((Base)derived));
}
}
public class ClassC
{
}
public abstract class Base//<A, B> : IBase<A, B> where A : class where B : class, new()
{
private readonly ClassC _classC = new ClassC();
}
public class Derived : Base//<ClassC, ClassD>
{
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJdmFyIGRlcml2ZWQgPSBuZXcgRGVyaXZlZCgpOwoJCXZhciBiYXNlVHlwZSA9IGRlcml2ZWQuR2V0VHlwZSgpLkJhc2VUeXBlOwoJCQoJCXZhciBjbGFzc0NGaWVsZCA9IGJhc2VUeXBlLkdldEZpZWxkKCJfY2xhc3NDIiwgQmluZGluZ0ZsYWdzLk5vblB1YmxpYyB8IEJpbmRpbmdGbGFncy5JbnN0YW5jZSk7CgkJCQkKCQlDb25zb2xlLldyaXRlTGluZShjbGFzc0NGaWVsZC5HZXRWYWx1ZSgoQmFzZSlkZXJpdmVkKSk7Cgl9Cn0KCnB1YmxpYyBjbGFzcyBDbGFzc0MKewp9CgpwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFzZS8vPEEsIEI+IDogSUJhc2U8QSwgQj4gd2hlcmUgQSA6IGNsYXNzIHdoZXJlIEIgOiBjbGFzcywgbmV3KCkKewoJcHJpdmF0ZSByZWFkb25seSBDbGFzc0MgX2NsYXNzQyA9IG5ldyBDbGFzc0MoKTsKfQoKcHVibGljIGNsYXNzIERlcml2ZWQgOiBCYXNlLy88Q2xhc3NDLCBDbGFzc0Q+CnsKfQ==