設計間違ってるんじゃね?

.NET FrameworkのXmlSerializerは、コンストラクタにTypeの配列を渡すことで、object型の変数でもシリアライズできます。
これは、シリアライズ時に型情報を書き込んで、デシリアライズ時に型情報を元にインスタンス化するからです。
 
と、こ、ろ、が、、、なぜかインタフェース型の変数がシリアライズできません。
 
全てのインタフェースを実装したクラスはobject型の継承になるので、
 
object⊇インタフェース⊇インタフェースの実装インスタンス
 
の関係が当然の様になりたつと思い込んでいたのですが、言語設計的にはそうでないのかもしれないですね。
objectにもインタフェースにもToStringとかが存在することを考えると、次の様な半順序集合が成り立つのかもしれないですね。
 
何らかのスーパースーパーインタフェース⊇object⊇インタフェースの実装インスタンス
何らかのスーパースーパーインタフェース⊇インタフェース⊇インタフェースの実装インスタンス
 
とか思っているのですが、、、やっぱり現実的な認識としては
 
object⊇インタフェース⊇インタフェースの実装インスタンス
 
であって、もしもこれが理論的にも正しいなら、XmlSerializerの挙動は、設計的に問題があると思うんです。
XmlSerializerの実装に問題があるのではなく、XmlSerializerがそういう挙動をしなければならない.NET Framework全体の設計に問題があるのではないかな、とか。