2012-01-19 6 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文書を読み込み、保存するために使用されています。 主なアプリケーションの中で私は観測可能なデータが必要です。この場合私はプリズムを使い、クラスはNotificationオブジェクトから継承します。

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); 
       } 
................. 

それでは、私がやっていることは、私が最初にFileクラスにXMLファイルを読み込むと、私はFileItemクラスに変換する必要があると私は戻ってそれをXMLに保存したいときに私がする必要があるということです逆変換をもう一度行います。これは私にとって少し不愉快なようです。私はFileItemに直接シリアライズするソリューションを考えることができますが、私はFileObjectを単純なものにしておく必要があります。これは、通知オブジェクトを必要としないプリズムアセンブリがインストールされていない他のコンポーネントによって使用されるアセンブリで定義されています。

これを簡単にする方法に関するアイデア。

答えて

0

AutoMapperを使用すると、あるオブジェクトから別のオブジェクトに自動的にマップできます。

+0

良いアイデアのように見えますが、私はちょっと読んで、ナゲットと一緒に持っています。最近のサンプルをどうやって入手するのか分かりませんが、探しているのはそうです – klashagelqvist

関連する問題