C# 使用xml序列化程序控制Guid格式
我无法控制xml序列化程序如何格式化Guid 是否仍然可以使用XMLSerializer强制第一个示例的属性排除破折号? 例如:C# 使用xml序列化程序控制Guid格式,c#,xml,xsd,uuid,xmlserializer,C#,Xml,Xsd,Uuid,Xmlserializer,我无法控制xml序列化程序如何格式化Guid 是否仍然可以使用XMLSerializer强制第一个示例的属性排除破折号? 例如: public class Example{ [XmlElement] public Guid Value {get; set;} } 当序列化上述类时,我会得到:(36个字符) 提供xsd 该公司提供的xsd将自定义类型定义为一个范围为1到35个字符的字符串,但他们的文档说明该值应始终为一个不带破折号且长度为32个字符的字符串 提供的版本只有丹麦版本 有
public class Example{
[XmlElement]
public Guid Value {get; set;}
}
当序列化上述类时,我会得到:(36个字符)
提供xsd
该公司提供的xsd将自定义类型定义为一个范围为1到35个字符的字符串,但他们的文档说明该值应始终为一个不带破折号且长度为32个字符的字符串
提供的版本只有丹麦版本
有关具体问题,请参见第5页sekt 01.07.2016 UUID i EpisodeOfCareIdentifier
关于标准(可选阅读):
本标准是县、医院和其他独立医疗专家之间关于患者治疗的信息服务的一部分。
总而言之,有相当多的软件系统必须实现这一标准。我认为没有更好的方法来实现这一点。这里的技巧似乎不起作用,因为
XmlSerializer
将Guid
视为“基元”,请参阅:不能为基元类型指定xmlement的类型。您好,Jesper。你找到解决办法了吗?我在同一个地方绊倒了,我想没有更好的办法了。这里的技巧似乎不起作用,因为XmlSerializer
将Guid
视为“基元”,请参阅:不能为基元类型指定xmlement的类型。您好,Jesper。你找到解决办法了吗?我在同一个地方绊倒了。
<Example>
<Value>3164fc09-1dc5-4629-b04c-e9cdc5e85de4</Value>
</Example>
<Example>
<Value>06102471381242609d0176b269120082</Value>
</Example>
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();
}
}
}