检查帐户类型

时间:2014-08-03 12:09:06

标签: c# .net types

我正在尝试一些新事物而且我遇到了一个问题。我知道这件事有些缺失,但我不知道它是什么。

我有一个班级(Account)和一个枚举AccountType,我想做的是创建一个新帐户:

Account account = new Account()
{
   // Make it known that this particular account is of type TransactionAccount.
}

public enum TypeOf
{
   Transaction,
   Savings
}

public TypeOf AccountType { get; set; }

所以稍后我可能会这样做:

if(account.AccountType == TypeOf.Transaction) { // Do something. }

或:

if(account is AccountType.Savings) { // Do something. }

我该怎么做?

2 个答案:

答案 0 :(得分:3)

你想做什么会违反Liskov替代原则。更好的设计是拥有Account的子类并利用多态性。

通过这种方式,您还可以遵守开放式原则,并且当图片中出现新类型的帐户时,您无需添加新的if分支。

答案 1 :(得分:2)

您的班级设计原则上是有效的。您只需存储帐户类型:

Account account = new Account()
{
    AccountType = TypeOf.Transaction,
};

您可能应该将TypeOf重命名为AccountType。什么" TypeOf"你刚才听到的意思是什么?这不代表任何意思。不是一个好名字。