0

C# winforms アプリケーションで MVP パターンを使用していますが、次の設計上の問題に遭遇しました。Userドメイン内にクラスUserCollectionDAOがあり、基本的にすべてのユーザーにデータベースから他の情報をロードするクラスがあります。プレゼンターを介してビューにユーザーのコレクションを表示するときに、すべてのプロパティを表示したくありません。たとえば、私のユーザーには次のプロパティがあります。

class User
{
   public User(int id)
   {
      Id = id;
   } 

   public int Id { get; private set; }

   public string Name { get; set; }

   public LocationId { get; set; }
}

Listviewのユーザーに表示したいのは、システム内の別のデータ構造から取得できる名前と場所の名前です。同時に、アプリケーションの他の領域で LocationId と Id を使用したいと考えています。使用する必要があるかもしれない別のレイヤー、DTO オブジェクトのレイヤーについて読みました。それについてのあなたの意見は何ですか?私が望むものを達成する別の方法を見つけることができますか? ビューから DTO ユーザー インスタンス、ドメイン ユーザー インスタンスに情報を渡すにはどうすればよいですか?

どんなアイデアでも大歓迎です。

4

1 に答える 1

1

通常、ドメイン クラス/モデルを ViewModel (特定のビューに固有のモデルで、モデルの特定のプロパティを非表示にする) に変換します。

ドメイン サービス レイヤーで、モデルをビュー モデルに変換するメソッドを作成するか、AutoMapperなどのライブラリを使用してモデルを自動変換します。ドメイン ユーザー クラスの一部のプロパティは、 AutoMapper によって自動的にコピーされるように、公開する必要がある場合あります (公開しないのはなぜですか?)。

参考資料: MVVM パターン

于 2012-11-23T17:22:13.470 に答える