所以,问题很简单: 如何从外部覆盖类的构造函数。问题本身是,我有一个已编译的类,它已经有一些构造函数,但是那些编码器的idiots删除了一个构造函数,所以我现在无法XML(de)序列化它......
他们所做的就是这样:
他们改变了
Vector2();
Vector2(x,y);
成
Vector2(X = 0,Y = 0);
但是我的问题是,Serializer并不是那么聪明才能意识到他仍然可以创建类,并且改变整个代码将是一个痛苦的* * *
答案 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() { }
}