Я реализую IXmlSerializable
в неизменяемом классе.Чтобы сохранить класс неизменным, я реализую интерфейс явно, чтобы скрыть методы, и использую статический метод ReadXml()
, который инкапсулирует метод ReadXml(XmlReader reader)
и, вместо этого, возвращает новый экземпляр моего класса.Однако, и если предположить, что класс называется ClassA
, то, как я вынужден реализовать IXmlSerializable
, подразумевает, что оператор
((ClassA)((IXmlSerializable)(ClassAObject)).ReadXml(reader))
фактически мутирует ClassAObject
, поскольку внутриIXmlSerializable.ReadXml
Я присваиваю параметры уже созданному объекту.Может ли ClassAObject
все еще считаться неизменным?