我应该为职位创建枚举还是收藏?

时间:2014-02-27 09:43:11

标签: c# .net oop collections enums

我想创建示例程序。 它将有部门类,职位类,员工类。

每个部门都有任何职位。我不知道应该如何指定。

我不使用DataBase。它只是在Console中学习OOP。

2 个答案:

答案 0 :(得分:1)

是否使用EnumCollection主要取决于以下条件:

  • 您期望更改位置的可用值的频率如何?
  • 谁将进行更改?
  • 该位置只有Id和Text,还是您希望它还有其他数据字段。
  • 每个部门的每个职位是否可以使用一次而不是几次?

如果你的答案是

  • 很少。
  • 开发者。
  • 仅限ID和文字。

然后使用FlagsAttribute Enum是个不错的选择。但是,如果对此有任何疑问,为Position创建一个类并添加一个集合是一种更好的方法,因为它更灵活。如果需要,它还允许您多次向部门添加相同类型的职位。

虽然到目前为止您还没有使用数据库,但请注意,与具有应该进入单独结构的相关位置相比,向部门添加Enum属性更容易保存。


根据您的评论,我建议在创建时添加一个构造函数来设置部门中的相关数据(您可能还会考虑数据是否应该是私有字段,因为您无法从外部访问它们):

class Department 
{ 
    public Department(Dep departmentType, IEnumerable<Position> positions, int employeeCount)
    {
        this.departmentType = departmentType;
        this.positions = new List<Position>(positions);
        this.employeeCount = employeeCount;
    }

    Dep departmentType; 
    List<Position> positions; 
    int employeecount;
}

然后您可以像这样创建一个新的部门:

var dep = new Department(Dep.Electric, 
                         new Position() [] { new Position(), new Position() }, 
                         5);

请注意,您可能还需要向Position类添加构造函数。在上面的示例中,我创建了两个Position对象,这些对象被添加到Department中的Positions列表中。

答案 1 :(得分:0)

如果position只是字符串值,那么最好将它们作为枚举并在其周围编写逻辑。

如果将新位置添加到枚举中,逻辑将会中断,这将有助于您为每个位置编写特定功能。

您可以围绕此位置枚举编写一个类,以根据枚举更改其功能。