У меня проблема с контролем того, как сериализатор xml форматирует Guid.
В любом случае можно ли принудительно заставить свойство первого примера исключить дефисы, используя XmlSerialzer?
пример:
public class Example{
[XmlElement]
public Guid Value {get; set;}
}
при сериализации вышеуказанного класса я получу: (36 символов)
<Example>
<Value>3164fc09-1dc5-4629-b04c-e9cdc5e85de4</Value>
</Example>
, но я хочу, чтобы значение не включало тире (32 символы)
<Example>
<Value>06102471381242609d0176b269120082</Value>
</Example>
обычно я бы не заботился о разнице, но в данном конкретном случае у меня нет выбора, поскольку я должен следовать стандарту, предоставленному третьей стороной, который включает в себя набор xsd .
Я знаю, что могу сделать что-то подобное, чтобы решить проблему, но это грязно, и я хотел бы избежать этого:
public class Example
{
[XmlIgnore]
public Guid Value { get; set; }
[XmlElement(nameof(Value))]
public string ValueString {
get => Value.ToString("N");
set
{
if (Guid.TryParse(value, out var uuid))
Value = uuid;
else
throw new InvalidOperationException();
}
}
}
Предоставлено xsd
xsd, предоставляемый этой компанией, определяет настраиваемый тип как строку с диапазоном от 1 до 35 символов, но в их документации указано, что значение всегда должно быть uuid версии 4 без тире и длиной до 32 символов.
документация предоставляется только с версией * dan sh.
См. стр. 5 сек 01.07.2016 UUID i EpisodeOfCareIdentifier для уточнения c проблема.
о стандарте (необязательное чтение):
Этот стандарт является частью службы сообщений между округами, больницами и другими независимыми специалистами здравоохранения, касающейся пациента лечения. В целом, существует немало программных систем, которые должны реализовывать этот стандарт.