У меня есть класс, который связывается с API и должен делать некоторые преобразования для любых данных, которые он затрагивает. Этот класс также эквивалентен:Свойство должно быть установлено только с помощью Serializer
public class SerializeMe
{
public SerializeMe(string someString)
{
_someString = someString;
}
private string _someString;
public string TransformedValue
{
get { _someString = TransformToSomething();
return _someString; }
set { _someString = value; }
}
}
Для моих пользователей API я регистрирую каждый запрос и отклик путем сериализации этих классов. Они действуют как xml-схемы почти.
Теперь все работает отлично, моя единственная проблема в том, что кто-то теоретически может попытаться установить и не вернуть ожидаемые результаты. Это главным образом проблема дизайна, которая просто пытается сделать мой код ответственным. Мне бы очень хотелось использовать частный набор, но XmlSerializer жалуется на это.
Есть ли какой-либо атрибут или другой способ, чтобы сделать преобразованное значение незаметным, за исключением сериализатора?
Также, если нет опции, это означает, что свойство «Устаревшее» является опцией. Есть ли другой более подходящий атрибут?
Также DataContractSerializer более совершенен, чем XmlSerializer, и может обрабатывать как поля, так и свойства. Один недостаток заключается в том, что вы не можете контролировать структуру Xml, поэтому, если вам нужно, чтобы он был в определенном формате, вы не сможете его использовать. – Bronumski
@bronumski, если производительность была ключевой целью, я бы использовал protobuf-net вместо :) –