我的课程定义如下:
public class Category
{
public int Id {get; set;}
public string Name {get; set;}
//... additional properties ...
}
我的数据库中大约有10个类别,并且该集合将来不太可能发生变化(尽管可能会偶尔添加新类别)。每个类别都有许多与之相关的字段。
在大多数情况下,其他类只填充了类别Id
。我需要根据特定类别执行不同的操作。
例如:
if (categoryId == 1)
{
//do something
}
else
{
//do something else
}
我希望在执行此操作时避免硬编码值。
我通常会为此目的使用枚举,但在这种情况下我不确定如何构造它,因为我已经有了一个类。一个想法是创建一个名为CategoryEnum
的单独枚举,但这看起来很臭。另一个选择是使用类常量。
将类别Id
与特定常量值进行比较的最明确方法是什么?
答案 0 :(得分:1)
这个怎么样:
public enum CategoryId { ... }
public class Category
{
public CategoryId Id {get; set;}
public string Name {get; set;}
//... additional properties ...
}
枚举描述了ID,而其他类则添加了其他有用的信息。
如果您想将此保留为int
属性,您仍然可以使用枚举:
public enum CategoryId { ... }
public class Category
{
public int Id {get; set;}
public string Name {get; set;}
//... additional properties ...
}
然后当你需要测试值时:
switch ((CategoryId)myCategory.Id)
{ ... }
答案 1 :(得分:1)
如果我理解正确排队,这应该是一个有效的实现。
if(categoryId == (int)Category.CategoryOne)
{
...
}
else
{
...
}
答案 2 :(得分:0)
基于Antarr Byrd的response,似乎使用类常量为最清晰的代码。
public class Category
{
public const int CATEGORY_ONE = 1;
public const int CATEGORY_TWO = 2;
//etc.
public int Id {get; set;}
public string Name {get; set;}
//... additional properties ...
}
并进行比较:
if (categoryId == Category.CATEGORY_ONE)
{
//do stuff
}