次のシナリオがあります。
シリアルポートなどを介して一部のコンピューター外部デバイスと通信する MVVM アプリケーションを設計しています。すべてDevice
には、ID、名前などのいくつかのプロパティがあり、さらにModule
独自のプロパティを持つさまざまな で構成されています。デバイスを保存およびロードするための一種のxmlデータベースがあります。それぞれDevice
に独自のファイルがあります。ともかく:
アプリケーションは、すべてのファイルをリポジトリの種類ごとにロードし、Devices
実際に接続されているものを選択するためのリストを提供するか、新しいものを作成します。現在の を選択すると、デバイスのタイプに基づいたDevice
のリストを表すページが表示されます。Modules
すなわち:
Device_Type_A
Module_A
と_Module_B
Device_Type_B
Module_A
と_Module_C
...
のプロパティは、Modules
通信を介して入力されます。Modules
ここで、現在のデバイスの xml ファイルに、一種のモジュール状態履歴の状態を保存したいと考えています。
これを行うためのベストプラクティスは何ですか? Fowlers SnapshotModuleSnapshot
に基づいてクラスを作成して保存すると便利ですか? それとも、一種の不変値オブジェクトを作成してファイルに保存する必要がありますか?
デバイスはエンティティですが、モジュール履歴エントリは値オブジェクトのように感じます。読み込んだデバイスファイルの履歴も表示したい。Module
通信用のモデルとしてのクラスと、そのような不変値オブジェクトのコピー用のクラスが必要ModuleHistory
ですか?
このようなもの?
public class Device_Type_A : DeviceBase
{
// Some special Type_A properties ...
public string Type_A_Shape{get; set;}
// ...
}
public class DeviceBase
{
public string Id { get; private set; }
public string DeviceName { get; private set; }
public List<ModuleHistory> History { get; private set; }
// ...
}