【问题标题】:C# Using struct in XmlSerializer without creating a separate xml nodeC# 在 XmlSerializer 中使用结构而不创建单独的 xml 节点
【发布时间】:2021-09-13 07:15:54
【问题描述】:

我有一个要序列化为 Xml 的类:

[XmlRoot(ElementName = "readCase", Namespace = "XXX")]
public class ReadCase
{       
    [XmlElement(ElementName = "versionAsOf", Namespace = "XXX")]
    public BaseUtcTimeStamp VersionAsOf { get; set; }
}

我创建了一个结构 BaseUtcTimeStamp:

[Serializable]
public struct BaseUtcTimeStamp
{
    private string _utcTimestamp;

    public string UtcTimestamp { get => _utcTimestamp; set { } } // set is needed for XmlSerializer

    public BaseUtcTimeStamp(DateTime utcDateTime)
    {
        if (utcDateTime.Kind != DateTimeKind.Utc)
        {
            throw new ArgumentException("Given dateTime must be Utc.");
        }

        _utcTimestamp = utcDateTime.ToString("yyyy-MM-ddTHH:mm:ssZ");
    }
 }

序列化的 XML 如下所示:

<case:readCase>
   <case:versionAsOf>
     <case:UtcTimestamp>2021-07-01T07:38:14Z</case:UtcTimestamp>
   </case:versionAsOf>
 </case:readCase>

我希望 BaseUtcTimeStamp 类型值直接位于 VersionAsOf 中(如 GUID)。示例:

<case:readCase>
   <case:versionAsOf>2021-07-01T07:38:14Z</case:versionAsOf>
 </case:readCase> 

【问题讨论】:

  • 注意:这里不需要[Serializable] - 它与xml序列化无关

标签: c# xml xml-serialization


【解决方案1】:
[XmlText]
public string UtcTimestamp { get => _utcTimestamp; set { } }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多