BはAに含まれるが、AはBじゃないからだと思うが。
return ((B) a).ToString(a);
なら通るだろ。