枚举应该放在MVC项目结构中的哪个位置?

时间:2011-08-09 18:07:25

标签: .net asp.net-mvc entity-framework enums domain-driven-design

我正在使用.NET MVC 3 Code-First方法。我的域名有一个名为Question的实体,此实体的Score属性为Byte,我想将该属性替换为Enum,并将此名称命名为Enum } Score我可以将值设置为0到10。

Enums应该在哪个地方居住?在我的模型文件夹中名为枚举的文件夹中?

更新

这是模型文件夹中的项目结构:

enter image description here

4 个答案:

答案 0 :(得分:7)

你真正关心的是你的枚举的名称空间

无论解决方案中存在类文件的位置,您的代码都依赖于命名空间。我想你可能想要一个像Questiona2011.Enums这样的命名空间。将Enum类绑定到Models命名空间并不是一个好主意 - 不是说它无法完成,但有时视图可能需要与您的枚举进行交互。所以我倾向于给我的枚举一个单独的命名空间。

您不一定需要为类文件创建一个文件夹...如果您愿意,可以保留在根目录中 - 真正的因素是命名空间。

因此,创建一个具有命名空间的类,如下所示:

using System;

namespace Questiona2011.Enums
{
    public enum Score
    {
        One = 1,
        Two = 2,
        .
        .
        .
        Ten = 10
    }
}

话虽如此,我只是将类文件放在Models文件夹中。 :)

答案 1 :(得分:2)

除非有更好的地方放置它们,否则我将它们粘在Model文件夹中。

如果你有很多枚举,你可能想要做你正在做的文件夹的想法。我不认为我会把它称为“枚举”,因为这不是很具描述性。

答案 2 :(得分:2)

听起来你有一个价值对象。我把它放在你将域中的其他值对象放在同一个地方,这实际上取决于你的文件夹结构。绝对位于Model文件夹中,但如果您要细分模型文件夹,则取决于您的操作方式。你有Q& A子文件夹吗?也许它会在问题旁边。或者你有一个Value Objects子文件夹?也许在那里。

答案 3 :(得分:1)

如果您的项目变得足够大以至于关注组织,那么您应该考虑创建一个新的项目,它只是应用程序类型的DLL。