У меня есть класс C #, который должен быть сериализован как XML. Один из подузлов имеет идентификатор последовательности, который увеличивается. Следующий код работает.
public class PlansSummary
{
public int Id { get; set; }
public List<Plan> Plans { get; set; } = new List<Plan>();
public string ToXml()
{
var serializer = new XmlSerializer(this.GetType());
using (var stringXml = new StringWriter())
{
serializer.Serialize(stringXml, this);
return stringXml.ToString();
}
}
}
public class Plan
{
private static int _sequenceCount = 1;
public Plan()
{
_sequenceCount++;
}
//// In this property, 'set' must exist and be public for XmlSerializer to work
public int sequence { get; set; } = _sequenceCount;
public DateTime planStartDate { get; set; }
public DateTime planEndDate { get; set; }
}
Но ничто не мешает следующему разработчику использовать мой класс и использовать опцию set в свойстве sequence. Я не могу сделать последовательность частной или только для чтения, потому что это остановит появление последовательности в XML. Есть ли решение для этого?