簡體   English   中英

.NET Xml序列化程序可選屬性

[英].NET Xml serializer optional attributes

鑒於以下代碼......

[XmlType("Field")]
public class SearchField
{
    [XmlAttribute("alias")]
    public string Alias;

    [XmlAttribute("entity")]
    public string Entity;
}

別名是我們的可選字段,但是當xml中缺少“alias”屬性時,反序列化器會拋出。 你如何讓它成為可選的? 是否需要架構?

很奇怪,因為以下程序對我來說沒問題,沒有任何投擲:

using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;

[XmlType("Field")]
public class SearchField
{
    [XmlAttribute("alias")]
    public string Alias;

    [XmlAttribute("entity")]
    public string Entity;
}

class Program
{
    static void Main()
    {
        using (var reader = new StringReader("<Field entity=\"en\" />"))
        {
            var serializer = new XmlSerializer(typeof(SearchField));
            var s = (SearchField)serializer.Deserialize(reader);
            Console.WriteLine(s.Alias);
            Console.WriteLine(s.Entity);
        }
    }
}

如您所見,輸入XML中省略了alias屬性,但反序列化沒有問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM