作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我处于需要在数据库中存储支付类型枚举值以保存记录的情况。
问题是我想添加最终用户定义自己的值类型的能力。
我知道我可以在我的枚举中为我自己的值使用负范围,因为用户定义的类型将具有大于 0 的 ID,但这是正确的方法吗?
或者也许我应该有第二列,如 CustomPaymentType 并引用 PaymentType 表以确保数据一致性?
最佳答案
不要使用枚举。
枚举仅对本质上不变的事物有用,例如一周中的几天。
而是使用数据库中的引用表,如 CustomPaymentType (Id,PaymentTypeName)然后你可以使用一个看起来像这样的类:
public class CustomPaymentType
{
public string paymentTypeName { get; private set; }
public int Id { get; private set; }
// if you need "Constant payment types usable in code, just add something like:
public static CustomPaymentType CashPayment
{
get { return new CustomPaymentType() { Id = 7, paymentTypeName= "CashPayment" } }
}
public static CustomPaymentType CreditPayment
{
get { return new CustomPaymentType() { Id = 7,paymentTypeName= "CreditPayment" } }
}
}
这种方法非常好,因为您既可以轻松地对编码时可能需要的众所周知的特定实例进行编码,又可以很好地扩展。
关于c# - 存储枚举和用户定义值的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24287820/
我是一名优秀的程序员,十分优秀!