1

ドメインモデルに列挙型があります:

public enum MessageType
{
    Ad = 1,
    Ask = 2
}

また、DTO を使用してサービス層から UI 層にデータを転送します。

Controller では、Service Layer から特定のタイプのすべてのメッセージを取得する必要があります。

_messageService.GetAllAds(MessageType.Ad);

ドメイン モデルは UI にマッピングされていないため、どうすればそれを UI に渡すことができますか?

ありがとう

4

2 に答える 2

0

私はしばらく前に私のプロジェクトでこの問題に遭遇しました。私は列挙型をUIレイヤーにコピーし、基本的に2つの(ほぼ)同一の列挙型(それらを区別するためにわずかに異なる名前を付けた)を持つことになりました。基本的に、これは列挙型のビュー モデルのようなものです。

これは優れた解決策ではありません。後でもっと良い方法を思いついたら、プロジェクトをリファクタリングするかもしれませんが、うまくいきます。これの利点の 1 つは、ドメイン層では意味をなさない UI 関連の属性で UI 層の列挙型を装飾できることです。

于 2013-03-13T00:21:04.897 に答える
0

コントローラーとサービスの間で共通のものを利用できるようにする必要があります..それMessageTypeが現在使用している列挙型であろうと他のものであろうと..そこに a を渡したいかもしれませんstringが、お勧めしません. 個人的には、コントローラーからドメイン エンティティに直接アクセスできないようにすることも好みますが (代わりにビュー モデルを使用します)、列挙型については例外を設けています。

私のアドバイス:コントローラーがその列挙型を引き続き使用できるようにします。

于 2013-03-13T00:21:14.020 に答える