我应该将权重存储在什么中

本文关键字:在什么 存储 权重 我应该 | 更新日期: 2023-09-27 18:28:00

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

我觉得这是个好主意,因为那样我就可以像一样进行检查了

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

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

然后我打算将枚举转换为一个数组并将其显示给用户,但我遇到了一个问题"Fluid Ounce"。我必须将其显示为"FluidOunce"。

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

我应该将权重存储在什么中

选项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

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

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");
    ...
}