コンパイル時に存在しないオブジェクトの型は決定できないと思う。
どの型かわからなくても、たとえば(boxingされていれば)、その型のtoString()が実行できる。