public class MyClass1
{
public virtual object Copy()
{
return this.MemberwiseClone();
}
}
public class MyClass2 : MyClass1
{
public new virtual MyClass1 Copy()
{
return (MyClass1)this.MemberwiseClone();
}
}
public class MyClass3 : MyClass2
{
bool m_Copied = false;
public override MyClass1 Copy() // <-- ERROR: cannot change return type when overriding method
{
m_Copied = true;
return (MyClass2)this.MemberwiseClone();
}
}