public ClassB classB { get; set; }
public string message { get; set; }
private static void SetMessage(ClassC c, string message)
private static T CreateInstanceOf<T>()
var obj = (T)Activator.CreateInstance(typeof(T));
Type type = obj.GetType();
PropertyInfo prop = type.GetProperty("message");
prop.SetValue(obj, "Hi");
public static void Main()
var c = CreateInstanceOf<ClassC>();
Console.WriteLine("C works");
var b = CreateInstanceOf<ClassB>();
Console.WriteLine("B works");
var a2 = CreateInstanceOf<ClassA2>();
Console.WriteLine("A2 works");
var a = CreateInstanceOf<ClassA>();