2016-07-14 2 views
1

私はドメインモデルとビューのレンダリングに使用されるモデルを分けることについて読んだことがあります。私がMVC/UIレイヤーでモデルを作成したり、ビジネスレイヤーからデータを取り込んだりする際に、各ドメインモデルで理解できる限り、UIモデルを作成します。 int、floatはすべて問題ありません。ViewModel(UIレイヤー)とドメインモデル(ビジネスレイヤー)で同じEnums定義を使用する必要がありますか?

enumをどのように処理すればよいですか?

私は別の列挙型定義をすべてUIレイヤーに作成してから、ビジネスレイヤーからUIレイヤーに情報をインポートするときに列挙型をマップする必要がありますか?または、私のビジネスレイヤーで定義されている同じ列挙型をUIレイヤーでも使用することはできますか?

+1

同じ列挙型を使用すると、はるかに少ないトラブルが発生します。質問の場合は –

+0

+1。これは良い質問ですが、意見に基づいた回答のみを抽出するために、SOによっておそらくシャットダウンされます。 – nashwan

答えて

4

同じ列挙体を使用してください。それは混乱を減らし、あなたが物事を見ている場所を1つだけ与え、変更を加える必要がある場合は簡単にします。

モデルとビューの分離は、論理を維持しないようにするのに便利ですが、単一の列挙型を使用してもそれを妨げることはありません。

条件付きのコンパイルやリンクを頻繁に行うことが予想されるため、コードのさまざまな部分を共有ヘッダーから削除する必要がある場合は例外ですが、ここではそうではありません。

+0

必ずしもそうではありません。同じものを使用している場合、列挙型がドメインモデルの一部であると仮定すると、ビューをドメインモデルに直接結合します。私には、ViewModelを介してViewにバインドする代わりに、実際にAPI契約を通じて列挙型を公開していた場合、これはさらに悪くなります。これは、このドメインモデルの列挙型が別のシステムによって直接使用される可能性があることを意味します。 – nashwan

1

実際、列挙型はint(ほとんどの場合)ショートカットです。

あなたは列挙型の自動ドロップダウンリストのを使用してテキストを変更したい、またはあなたがプロジェクトとしてあなたのDALの「クローズ」にしたい場合は、例によって、

public enum ADalEnum : int 
{ 
    One = 1, 
    Two = 2, 
    Three = 3 
} 

のようなものを作るために役に立つかもしれ場合...

public enum MappedEnum : int 
{ 
    One_Little_Indians = ADalEnum.One, 
    Two_Little_Indians = ADalEnum.Two, 
    Three_Little_Indians = ADalEnum.Three, 
} 

したがって、「同じ」となります。

関連する問題