我有一些重量(盎司,克等),但不知道我应该如何处理它们。起初我打算使用Enum并给每个值一个整数值,然后将该值存储在我的数据库中(使用EF)
我认为这是一个好主意,因为我可以做像
这样的检查if(Measurement.Grams == usersChoice)
{
// do something
}
它也会限制选择(即如果我不支持“stone”,那么如果我尝试在枚举中设置它就会失败),
然后我要将Enums转换为数组并将其显示给用户,但我遇到了一个问题“Fluid Ounce”。我必须将其显示为“FluidOunce”。
我可以使用Description属性,但现在我不确定这是否是正确的方法。
答案 0 :(得分:1)
使用enum Measurement
和Dictionary<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];
}
使用没有公共构造函数,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");
...
}