从外部覆盖类的构造函数

时间:2010-10-27 19:45:18

标签: c# .net constructor overwrite

所以,问题很简单: 如何从外部覆盖类的构造函数。问题本身是,我有一个已编译的类,它已经有一些构造函数,但是那些编码器的idiots删除了一个构造函数,所以我现在无法XML(de)序列化它......

他们所做的就是这样:
他们改变了 Vector2(); Vector2(x,y); 成 Vector2(X = 0,Y = 0);

但是我的问题是,Serializer并不是那么聪明才能意识到他仍然可以创建类,并且改变整个代码将是一个痛苦的* * *

2 个答案:

答案 0 :(得分:9)

继承它并自己提供预期的构造函数。

您可以使用派生类的反序列化实例,其中代码需要Vector2个实例:

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

// Your code:
Vector2 vector = (Vector3)XmlSerializer.Deserialize(xmlReader);

答案 1 :(得分:3)

如果有可能将该类标记为部分,则可以使用您自己的部分类声明添加它:

public partial class CompiledClass
{
   public CompiledClass() { }
}