4

したがって、質問は簡単です。クラスのコンストラクターを外部から上書きするにはどうすればよいですか。問題自体は、私がすでにコンパイルされたクラスを持っていて、それがすでにいくつかのコンストラクターを持っているということです、しかしそれらのコーダーの馬鹿はコンストラクターを削除したので、私は今それをXML(de)Serializeすることができません...

つまり、彼らが行ったことは次のとおりです。
彼らはVector2()を変更しました。Vector2(x、y); Vector2(x = 0、y = 0);に

しかし、私の問題は、シリアライザーがまだクラスを作成できることを理解するのにそれほどインテリジェントではなく、コード全体を変更することは***の苦痛になるということです。

4

2 に答える 2

9

それから継承し、期待されるコンストラクターを自分で提供します。

コードでインスタンスが必要な場合は、派生クラスの逆シリアル化されたインスタンスを使用できVector2ます。

public class Vector3: Vector2 {
    public Vector3(): base(0, 0) {}
}

// Your code:
Vector2 vector = (Vector3)XmlSerializer.Deserialize(xmlReader);
于 2010-10-27T19:47:33.830 に答える
3

何らかの理由でクラスが部分的としてマークされた場合は、独自の部分クラス宣言を使用して追加できます。

public partial class CompiledClass
{
   public CompiledClass() { }
}
于 2010-10-27T20:14:10.343 に答える