2016-05-11 17 views
1

私はC#プロジェクトで作業しています。データのローカルキャッシュを管理し、GUI上に提示する必要があります。私が持っている例えばデータを変換するためのデザインパターン

public class DataFromOtherLibrary 

今、私は私が必要とする情報は、それから

public class MyDataModel 
    { 
      private DataFromOtherLibrary cache; 
      public MyDataModel (DataFromOtherLibrary Source) 
      { 
        cache = Source; 
      } 
      public long Field1 { get { return cache.SomeField; } } 
      public long Field2 { get { return cache.OtherFiled; } } 
    } 

を翻訳支援するクラスを作りたい今私が持っている問題は、私が作成する必要がありますDataFromOtherLibraryごとにMyDataModelを入力すると、1つのトランスレータクラスを持つのがよいでしょう。私はどのようにそれを行うとまだ(私はデータバインドする必要があります)プロパティを実装するかわからない。

おかげ マット

+2

「IMyDataModel」を返すファクトリが必要なようです。しかし、それは情報の欠如のために暗闇の中でやや打撃を受けます。 – Jonesopolis

+0

あなたの目標は明確ではありません – Liam

+0

MyDataModleオブジェクトを含むListを返すProvider(Factory)クラスを使用する必要があるとも思います。 – SeeuD1

答えて

1

あなたは好きそれにすべてのDataModelsでプロバイダを使用する必要があります。

public class MyDataModelProvider 
{ 
    public List<MyDataModel> DataModelList { get; set; } 

    MyDataModelProvider() 
    { 
     loadDataModelList(); 
    } 

    private void LoadDataModel() 
    { 
     foreach (Cachobject c in Cache) 
     { 
      this.DataModelList.Add(new MyDataModel(c.valueA,c.valueB)); 
     } 
    } 
} 

と、このプロバイダーのために、あなたはまた、工場のようなものが必要です

[Singleton(true)] 
public class DataModelListProviderFactory 
{ 
    private static DataModelListProvider dataListProvider; 
    public DataModelListProvider getInstance() 
    { 
     if (dataListProvider == null) 
     { 
      dataListProvider = new DataModelListProvider(); 
      return dataListProvider; 
     } 
     else 
      return dataListProvider; 
    } 
} 

ので、今では、すべてのDataModelで単一のSpotを持ち、一度だけ受信する必要があります。ケースがある場合や、ビュー内のすべてのデータを表示している場合は、特定のモデルのリストを簡単に検索することもできます。

ファクトリーパターンの詳細についてはhereをご覧ください。

希望に役立ちます。

関連する問題