public static void Main()
var a = new Derived("XYZ");
Console.WriteLine(b.Name);
Console.WriteLine(b.GetType().ToString());
public abstract class BaseClass
public abstract BaseClass Clone();
public class Derived : BaseClass
public Derived(string name)
public string Name {get;}
public override Derived Clone()
return new Derived(this.Name);