2012-01-19 61 views
0

我有一個用於將數據序列化到xml的模型。爲數據綁定創建可觀察模型

防爆

public class File : IFile 
    { 

     [XmlAttribute] 
     public string ObjectId; 


     public string OriginalFileName { get; set; } 
     public string FileName { get; set; } 
     public int Size { get; set; } 
     public string Note { get; set; } 


     public static explicit operator File(FileItem a) // explicit File to FileItem conversion operator 
     { 
      File b = new File(); // explicit conversion 

      b.ObjectId = a.ObjectId; 
      b.Note = a.Note; 
      b.FileName = a.FileName; 
      b.OriginalFileName = a.OriginalFileName; 
      b.Size = a.Size; 

      return b; 
     } 
    } 

這些類主要用於讀取並保存worddocument內的XML文檔。 在主應用程序的內部,我需要數據是可觀察的,所以在這種情況下,我使用棱鏡,並且類從NotificationObject繼承。

防爆

public class FileItem : NotificationObject, IFile 
    { 

     public FileItem() 
     { 

     } 

     public static explicit operator FileItem(File a) // explicit File to FileItem conversion operator 
     { 
      FileItem d = new FileItem(); // explicit conversion 

      d.ObjectId = a.ObjectId; 
      d.Note = a.Note; 
      d.FileName = a.FileName; 
      d.OriginalFileName = a.OriginalFileName; 
      d.Size = a.Size; 

      return d; 
     } 



     private string _objectid; 
     public string ObjectId 
     { 
      get { return _objectid; } 
      set 
      { 
       if (!value.Equals(_objectid)) 
       { 
        _objectid = value; 
        this.RaisePropertyChanged(() => this.ObjectId); 
       } 
................. 

所以我要做的就是,我第一次讀取XML文件到文件類,然後我需要將其轉換成的FileItem類,當我想將它存回XML我需要再次進行反向轉換。這對我來說似乎有點難以理解。我可以想到一個解決方案,我直接序列化到FileItem,但我需要保持文件簡單,因爲它是由不需要通知對象的其他組件中使用的程序集中定義的,並且不會安裝棱鏡程序集。

關於如何簡化這一點的任何想法。

回答

0

您可以使用AutoMapper自動從一個對象映射到另一個對象。

+0

看起來像一個好主意,我讀了一些關於我,並與Nuget。我還沒有想出如何獲得最近的樣品,但它似乎是我在尋找什麼 – klashagelqvist