2011-01-30 62 views
1

我需要認識到,這樣的結構:屬性與元素DataContractSerializer的

Emplooyee:

  • ID
  • 電子郵件
  • 誕生日期
  • 顧客
    • ID
    • 名稱
    • 地址
    • 電話
    • 電子郵件
    • 更多然後1000名員工
  • 業務
    • ID
    • 名稱
    • 說明

每一個員工可能有不止一個客戶,所有的數據應該存儲/使用XML序列化加載/從XML文件,業務領域應存儲在XML作爲屬性

public class AllEntities 
{ 
    public AllEntities() 
    { 
     Create();   
    } 

    public List<Employee> allEmployees { get; set; } 

    public List<Customer> allCustomers { get; set; } 

    public List<Business> allBusiness { get; set; } 

    private void Create() 
    { 
     allCustomers = new List<Customer> { new Customer ("Company1", "Minsk", "1236547", "[email protected]", false), 
              new Customer("Company2", "Minsk", "7896589", "[email protected]", false)}; 
     allBusiness = new List<Business> { new Business("Programming", "Short description"), 
              new Business("Desin", "Short description")}; 

     allEmployees = new List<Employee> { new Employee("Alex", "Malash", "[email protected]", new DateTime(1990, 5, 9), allCustomers, allBusiness[0]), 
              new Employee("Ira", "Vashnko", "[email protected]", new DateTime(1990, 9, 1), new List<Customer> { allCustomers[0] }, allBusiness[1]), 
              new Employee("Igor", "Loshara", "[email protected]", new DateTime(1990, 1, 8), allCustomers, allBusiness[0])}; 
    } 
} 

當我使用的DataContractSerializer,我不能創建屬性,當我使用XmlSerializer的,在deserializetion,也有在不同的員工同ojects(客戶)不匹配(有相同帶一些filds不同的對象)。

我可以嘗試什麼?

+0

您可以嘗試使用XML序列化程序詢問您的問題。我們可能會幫助你。 – 2011-01-30 23:24:31

回答

2

DataContractSerializer不做屬性,所以忘記了。你真的想要XmlSerializer。我很不清楚你用ID來描述什麼問題。如果它錯誤地反序列化,我會感到非常驚訝。如果您認爲是這樣的話,可能會發佈一個可重複的示例,但聽起來像您只是有您沒有預料到的數據。

數據是數據,但我不知道這是否是因爲您期望完整的「圖形」反序列化(保留對象引用)。 XmlSerializer是一個「樹」序列化器,因此如果同一個對象被序列化了6次也沒關係 - 它將反序列化爲6個不同的對象。沒有什麼特別/獨特的可以識別它們。您唯一的選擇是在之後手動修復它們,方法是檢查重複項並用一個常見實例替換它們。

把它放在圖片中;如果您序列樹

一個

    • Ç
  • d
    • Ç

(下B和d相同的實例),將反序列化如:

    • Ç
  • d
    • Ë

但是,簡單地說C和E將是具有相同值的不同對象。

+0

感謝您的回答! 您正確地忽略了我的問題。我想知道,我能找到在erialize處創建屬性並在反序列化中識別對象的東西嗎? P.S.不要在ID處注意 - 這僅僅是對象的堆積,沒有更多。 – Turach 2011-01-31 10:51:10