0

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

我认为这将是一个好主意,因为这样我就可以进行检查

if(Measurement.Grams == usersChoice)
{
  // do something
}

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

然后我打算将枚举转换为数组并将其显示给用户,但我遇到了一个问题“液量盎司”。我必须将其显示为“FluidOunce”。

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

4

1 回答 1

1

选项1

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

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");
    ...
}
于 2013-08-15T22:48:22.747 回答