それは多態性の履き違いのような。
class B : A と同じ内容の class C : A があったとして、
a.ToString(a); は B と C どっちのコードが動くんだ?