我正在IXmlSerializable
一个不可变的类中实现。为了保持类不可变,我显式地实现了接口,以便隐藏方法,并使用ReadXml()
封装方法的静态方法ReadXml(XmlReader reader)
,而是返回我的类的新实例。但是,假设该类被调用ClassA
,我被迫实现的方式IXmlSerializable
意味着该语句
((ClassA)((IXmlSerializable)(ClassAObject)).ReadXml(reader))
实际上改变了ClassAObject
因为,在里面IXmlSerializable.ReadXml
我分配给一个已经创建的对象的参数。那个存在,ClassAObject
还可以被认为是不可变的吗?