In the base class:
public virtual string Name { get; set; }
In derived classes:
public override string Name { get; set; }
However, if the only difference between the classes is that they have different names, I would say that instead of inheriting you should just use the base class with the name specified in the constructor:
eg.
public class MyObject { public string Name { get; private set; } public enum ObjectType { TypeA, TypeB, ... } public MyObject(ObjectType obType) { switch (obType) { case ObjectType.TypeA: Name = "Type A";
source share