IXmlSerializable
を不変クラスに実装しています。クラスを不変に保つために、メソッドを隠すために、ReadXml(XmlReader reader)
メソッドをカプセル化し、代わりにクラスの新しいインスタンスを返す静的なReadXml()
メソッドを使用するように、インターフェイスを明示的に実装しています。しかし、クラスを想定すると、私はIXmlSerializable
を実装することを強制しています方法、ClassA
と呼ばれるステートメントIXmlSerializable and Immutability
((ClassA)((IXmlSerializable)(ClassAObject)).ReadXml(reader))
が実際にIXmlSerializable.ReadXml
の内側に、私はすでに作成されたオブジェクトのパラメータに代入しています、以来ClassAObject
を変異させることを意味します。つまり、ClassAObject
は依然として変更不可能とみなされますか?ちょうど2つのインターフェイスが同じシグネチャを持つメンバーを定義するときに曖昧さを回避する - 明示的な方法を「隠す」ために意図されていないインタフェースを実装