2012-03-03 73 views
1
 [XmlIgnore()] 
     public List<MyObject> ListMyObjects = new List<MyObject>(); 
     public List<string> MyProperty 
     { 
      get 
      { 
       List<string> list = new List<string>(); 
       foreach (MyObject obj in ListMyObjects) 
        list.Add(obj.Name); 
       return list; 
      } 
      set 
      { 
       foreach (string name in value) 
        ListMyObjects.Add(new MyObject(name)); 
      } 
     } 

为什么MyPropery不能序列化?我正在使用Xml Serializer。属性未序列化

+0

你能否提供更多信息?你使用什么样的序列化器? XML?数据合同,二进制? – 2012-03-03 07:18:23

+0

@PhilBolduc我正在使用XMl Serializer – HelloWorld 2012-03-03 07:40:06

+0

当它尝试序列化时会发生什么?任何一个访问者被调用?我实际上期望这项工作(尽管我也可能在“set”中有一个Clear()) – 2012-03-03 07:51:55

回答

1

有人请格式化我的代码,它不是在iPad上格式化。

请试试这个,

public string[] MyProperty 
        { 
            get 
            { 
                List<string> list = new List<string>(); 
                foreach (MyObject obj in ListMyObjects) 
                    list.Add(obj.Name); 
                return list.ToArray(); 
            } 
            set 
            { 
                foreach (string name in value) 
                    ListMyObjects.Add(new MyObject(name)); 
            } 
        } 
0

工作对我来说很好..检查这个..

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml.Serialization; 
using System.IO; 

namespace Serialization_Xml 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Data data = new Data(); 
      List<string> mylist = new List<string>(); 
      mylist.Add("A"); 
      mylist.Add("B"); 
      data.MyProperty = mylist; 
      FileStream fs = new FileStream("Data.xml", FileMode.Create); 
      XmlSerializer serializer= new XmlSerializer(typeof(Data)); 
      serializer.Serialize(fs, data); 
     } 
    } 

    public class Data 
    { 
     [XmlIgnore()] 
     public List<MyObject> ListMyObjects = new List<MyObject>(); 
     public List<string> MyProperty 
     { 
      get 
      { 
       List<string> list = new List<string>(); 
       foreach (MyObject obj in ListMyObjects) 
        list.Add(obj.Name); 
       return list; 
      } 
      set 
      { 
       foreach (string name in value) 
        ListMyObjects.Add(new MyObject(name)); 
      } 
     } 

    } 

    public class MyObject 
    { 
     public string Name; 
     public MyObject(string name) 
     { 
      Name = name; 
     } 
    } 
} 

输出:

<?xml version="1.0"?> 
<Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <MyProperty> 
    <string>A</string> 
    <string>B</string> 
    </MyProperty> 
</Data> 
相关问题