簡體   English   中英

如何自定義List的序列化 <string> 在C#中

[英]How to customize serialization of List<string> in C#

這讓我很難過。 我讀過這些:

http://msdn.microsoft.com/en-us/library/athddy89(v=VS.80).aspx

http://msdn.microsoft.com/en-us/library/2baksw0z(v=VS.80).aspx

但我不知道如何將它們應用到我想要做的事情上。 我想自定義以下列表序列化的方式...

[Serializable]
public class FinalConcentrations : List<string> { }

所以當我把它作為“objectToSerialze”傳遞給它時......

    public void serializeObject(object objectToSerialize, Stream outputStream)
    {
        // removes the default added namespaces
        XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
        ns.Add("", "");

        XmlSerializer serial = new XmlSerializer(objectToSerialize.GetType());
        MemoryStream ms = new MemoryStream();
        serial.Serialize(ms, objectToSerialize, ns);

        StreamReader reader = new StreamReader(ms);
        ms.Position = 0;

        ms.WriteTo(outputStream);
    }

...它將此內容寫入輸出流:

<FinalConcentrations>
   <FinalConcentration>string value 1</FinalConcentration>
   <FinalConcentration>string value 2</FinalConcentration>
   <FinalConcentration>string value 3</FinalConcentration>
</FinalConcentration>

......而不是這個

<FinalConcentrations>
   <string>string value 1</string>
   <string>string value 2</string>
   <string>string value 3</string>
</FinalConcentration>

我的serializeObject方法用於序列化各種各樣的對象,所以我正在尋找一種在FinalConcentrations定義中而不是在該方法中執行此操作的方法。

請幫忙。

解決這個問題的最簡單方法是傳入包裝器對象而不是列表本身,即

public class FinalConcentrations {
    private readonly List<string> items = new List<string>();
    [XmlElement("FinalConcentration")]
    public List<string> Items {get {return items;}}
}

那呢?

好吧,當我運行你的例子時,我真的得到了

<?xml version="1.0"?>
<ArrayOfString>
  <string>Red</string>
  <string>Green</string>
  <string>Blue</string>
</ArrayOfString>

但通過改變

  [Serializable, XmlRoot( ElementName= "FinalConcentrations")]
  public class FinalConcentrations : List<string> { }

我有

<?xml version="1.0"?>
<FinalConcentrations>
  <string>Red</string>
  <string>Green</string>
  <string>Blue</string>
</FinalConcentrations>

QED?

有一大堆XML裝飾器屬性可以改變序列化,例如。 的XmlElement。 值得一看。

祝你好運。

暫無
暫無

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

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