我应该把重量储存在哪里?

时间:2013-08-15 22:30:30

标签: c# enums

我有一些重量(盎司,克等),但不知道我应该如何处理它们。起初我打算使用Enum并给每个值一个整数值,然后将该值存储在我的数据库中(使用EF)

我认为这是一个好主意,因为我可以做像

这样的检查
if(Measurement.Grams == usersChoice)
{
  // do something
}

它也会限制选择(即如果我不支持“stone”,那么如果我尝试在枚举中设置它就会失败),

然后我要将Enums转换为数组并将其显示给用户,但我遇到了一个问题“Fluid Ounce”。我必须将其显示为“FluidOunce”。

我可以使用Description属性,但现在我不确定这是否是正确的方法。

1 个答案:

答案 0 :(得分:1)

选项1

使用enum MeasurementDictionary<Measurement, string>Measurement映射到显示名称。

public enum Measurement
{
    Grams,
    FluidOunces,
    ...
}

private static Dictionary<Measurement, string> displayName = new Dictionary<Measurement, string>
{
    { Measurement.Grams, "Grams" },
    { Measurement.FluidOunces, "Fluid Ounces" },
    ...
};

public static string DisplayName(Measurement measurement)
{
    return displayName[measurement];
}

选项2

使用没有公共构造函数,class Measurement个实例且具有属性的public static readonly

public class Measurement
{
    public string DisplayName { get; private set; }
    private Measurement(string displayName)
    {
        this.DisplayName = displayName;
    }
    public static readonly Measurement Grams = new Measurement("Grams");
    public static readonly Measurement FluidOunces = new Measurement("Fluid Ounces");
    ...
}