public class SomeOtherClass : MyBaseClass, ITest
public class MyWorkingClass : MyBaseClass, ITest
private readonly ITest _test;
public MyWorkingClass(ITest test)
public void MyBaseMethod()
var fields = GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly).ToList();
foreach (var field in fields)
var fieldType = field.FieldType;
var fieldInstance = field.GetValue(this);
if (fieldInstance == null)
var methods = fieldInstance.GetType().GetRuntimeMethods();
foreach (var item in methods)
Console.WriteLine(item.Name);
public static void Main()
var asd = new MyWorkingClass(new SomeOtherClass());