2012-01-06 65 views
0

,當我試圖序列數據我使用這個有用的類XML:http://weblogs.asp.net/pwelter34/archive/2006/05/03/444961.aspx如何使自動類型定義時序列化成XML

於是我有:

public class LocalizableString : SerializableDictionary<string, object> 
    { 
     public object Get(string language) 
     { 
      return this[language]; 
     } 

     public void Set(string language, string value) 
     { 
      Util.SetDictionaryValue<string, object>(this, language, value); 
     } 
    } 

如果我用平常這個代碼:

public void WriteXml(System.Xml.XmlWriter writer) 
     { 

      XmlSerializer keySerializer = new XmlSerializer(typeof(TKey)); 
      XmlSerializer valueSerializer = new XmlSerializer(typeof(TValue)); 
      foreach (TKey key in this.Keys) 
      { 
       writer.WriteStartElement("item"); 
       writer.WriteStartElement("key"); 
       keySerializer.Serialize(writer, key); 
       writer.WriteEndElement(); 
       writer.WriteStartElement("value"); 

       TValue value = this[key]; 
       valueSerializer.Serialize(writer, value); 
       writer.WriteEndElement(); 
       writer.WriteEndElement(); 
      } 
     } 

我西港島線得到:

<PersonenListe> 
    <PersonenArray> 
    <PersonObjekt> 
     <PropertyType>Unknown</PropertyType> 
     <ID>0</ID> 
     <FriendlyName>Max Man</FriendlyName> 
     <City>Capitol City</City> 
     <Age>33</Age> 
     <Name> 
     <item> 
      <key> 
      <string>test1</string> 
      </key> 
      <value> 
      <anyType xmlns:q1="http://www.w3.org/2001/XMLSchema" p8:type="q1:string" xmlns:p8="http://www.w3.org/2001/XMLSchema-instance">test2</anyType> 
      </value> 
     </item> 
     </Name> 
    </PersonObjekt> 
    </PersonenArray> 
</PersonenListe> 

但我需要有自動類型定義的代碼像上面,但沒有anyType的代碼(ONY類型的屬性),如在下面的例子:

<PersonenArray> 
    <PersonObjekt> 
     <PropertyType>Unknown</PropertyType> 
     <ID>0</ID> 
     <FriendlyName>Max Man</FriendlyName> 
     <City>Capitol City</City> 
     <Age>33</Age> 
     <Name> 
     <item> 
      <key> 
      <string>test1</string> 
      </key> 
      <value> 
      <string>test2</string> 
      </value> 
     </item> 
     </Name> 
    </PersonObjekt> 
    </PersonenArray> 
</PersonenListe> 

回答

0

這是因爲你的基礎字典鍵入<string, object>。如果您的關鍵字和值總是會是字符串,那麼你的第一線,從

public class LocalizableString : SerializableDictionary<string, object> 

改變

public class LocalizableString : SerializableDictionary<string, string> 

而且我猜想,這應該解決您的問題。

+0

但我會有不同類型的值,並不總是字符串 – revolutionkpi 2012-01-06 12:28:08

+0

啊,我明白了。看看'System.Xml'的源代碼在這裏似乎並沒有幫助我,我擔心,所以我不知道。抱歉。 – 2012-01-06 12:39:47

相關問題