Плохо, подумайте:
test.pKey = null;
test.Key = 'my new key';
Мне удалось обойти вашу защиту (очевидно, вы можете добавить проверку null
в метод set, чтобы решить эту проблему).
Та же проблема может возникнуть, если десериализованный объект имеет ключ null
, ключ все еще можно установить при первом обращении к нему ... Кажется, что если вам нужна такая защита, вам, вероятно, следует рассмотреть другой способ
XMLSerializer
накладывает ограничения на классы, которые вы используете с ним, и, пытаясь обойти эти ограничения, вы, скорее всего, вызовете путаницу.Если вы работаете в одиночном магазине, и вы единственный, кто смотрит на код, это может быть менее проблематично (по крайней мере, пока вы не отойдете от кода в течение нескольких месяцев), однако в случае нескольких разработчиковВ среде поведения вашего класса может возникнуть путаница.Например, вы скрываете назначение, не работающее, не выбрасывая исключение, поэтому операции присваивания будут компилироваться и выполняться, но не обновлять объект и не выбрасывать исключение, чтобы указать на сбой (что может привести к некоторому сложному отслеживаниюошибки).