Вы заменили реализацию в своих производных классах, не переопределяя их. Если вы используете BaseClass
, будет использована оригинальная реализация.
Вам нужно сделать метод в базе виртуальным:
public class BaseClass : IMsg
{
public BaseClass()
{
}
public virtual string PrintMessage()
{
return "BaseClass";
}
}
и переопределить в производном классе:
public class DerivedClass : BaseClass
{
public DerivedClass()
{
}
public override string PrintMessage()
{
return "DerivedClass";
}
}
чтобы получить указанное вами поведение.