2012-01-19 34 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