public static void Main()
Container c1 = new Container("abc");
Container c2 = new Container("123");
Console.WriteLine("####");
A a = new A() { PublicContainer = c1 };
Console.WriteLine("####");
B b = new B() { PublicContainer = c2 };
Console.WriteLine("####");
A ab = new B() { PublicContainer = c2 };
public Container PublicContainer;
Console.WriteLine("PrintStuff A");
PrintContainer(PublicContainer);
protected void PrintContainer(Container container)
bool hasContainer = container is not null;
string containerValue = container?.Value ?? "?";
Console.WriteLine($"has container: {hasContainer}, value: {containerValue}");
public new Container PublicContainer;
public void PrintDifferentStuff()
Console.WriteLine("PrintStuff B");
Console.WriteLine("My container:");
PrintContainer(PublicContainer);
Console.WriteLine("Base container:");
PrintContainer(base.PublicContainer);
public string Value {get;set;}
public Container(string value)