У меня есть класс SafeChargeDeposit
, унаследованный от BaseExternalDeposit
.
BaseExternalDeposit
, требующий в своем конструкторе тип переменной BaseDepositStructure
.
Поскольку требуется BaseDepositStructure
Я не могу использовать дочерние элементы в SafeChargeDeposit
.
, это код:
abstract class BaseExternalDeposit
{
public abstract BaseExternalDepositResult DoDeposit();
protected BaseDepositStructure depositStructure;
public BaseExternalDeposit(BaseDepositStructure depositStructure)
{
this.depositStructure = depositStructure;
}
}
class SafeChargeDeposit : BaseExternalDeposit
{
public SafeChargeDeposit(CreditCardDepositStructure depositStructure):base(depositStructure){}
public override BaseExternalDepositResult DoDeposit(){
/////// I CAN USE THIS MEMBER:
depositStructure.Amount = 50;
/////// BUT I CANNOT USE THIS MEMBER:
depositStructure.CreditCardNumber = "123456";
}
}
public class BaseDepositStructure
{
public double Amount = 0.0;
}
public class CreditCardDepositStructure : BaseDepositStructure
{
public string CreditCardNumber = string.Empty;
}
Я понимаю, почему я могу использовать depositStructure.Amount и не может использовать depositStructure.CreditCardNumber ... Но что не так с моим дизайном здесь?Как я могу решить эту проблему и сохранить гибкость использования Базы.