C# 使用xml序列化程序控制Guid格式

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个字符的字符串 提供的版本只有丹麦版本 有

我无法控制xml序列化程序如何格式化Guid

是否仍然可以使用XMLSerializer强制第一个示例的属性排除破折号?

例如:

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();
        }
    }
}