我应该在ViewModel(UI层)和域模型(业务层)中使用相同的枚举定义吗?

时间:2016-07-14 13:42:56

标签: c# asp.net-mvc

我已阅读过有关分离用于渲染视图的域模型和模型的信息。据我所知,对于每个域模型,我都可以(推荐)在我的MVC / UI层中创建模型,并在从业务层中提取数据时填充我的UI模型。 int,float很好我只是填充它们。

我该如何处理枚举?

我应该在我的UI层中一起创建一个不同的枚举定义,然后在将业务层中的信息传递到UI层时映射枚举吗?或者我的业务层中定义的枚举是否也可以在我的UI层中使用?

2 个答案:

答案 0 :(得分:4)

使用相同的枚举。这样可以减少混淆,让您只需一个地方查看内容,并在您需要进行更改时更轻松。

模型/视图分离对于保持逻辑非纠缠非常有用,但使用一组枚举不会妨碍它。

我要做的一个例外是,如果你需要保持代码的不同部分不共享标题,因为你希望进行大量的条件编译或链接,但这听起来不像这里的情况。

答案 1 :(得分:1)

嗯,实际上enums是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,
}

所以它会“相同”。