次のシナリオがあります。
シリアルポートなどを介して一部のコンピューター外部デバイスと通信する MVVM アプリケーションを設計しています。すべてDeviceには、ID、名前などのいくつかのプロパティがあり、さらにModule独自のプロパティを持つさまざまな で構成されています。デバイスを保存およびロードするための一種のxmlデータベースがあります。それぞれDeviceに独自のファイルがあります。ともかく:
アプリケーションは、すべてのファイルをリポジトリの種類ごとにロードし、Devices実際に接続されているものを選択するためのリストを提供するか、新しいものを作成します。現在の を選択すると、デバイスのタイプに基づいたDeviceのリストを表すページが表示されます。Modulesすなわち:
Device_Type_AModule_Aと_Module_B
Device_Type_BModule_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; }
// ...
}