Шаблон прокси не найдено подходящих методов для переопределения? Помогите, я не уверен, что просто пошло не так
Это все в форме...
пространство имен Proxy_Pattern {открытый частичный класс Form1: Form { public Form1() { InitializeComponent(); } double bankAmount = 1000,00;
private void btnCheck_Click(object sender, EventArgs e)
{
double amount;
amount = double.Parse(txtAmount.Text);
CheckProxy cp =new CheckProxy();
cp.CheckTransactionRequest(amount);
lbltotal.Text = bankAmount.ToString();
}
private void btnCreditCard_Click(object sender, EventArgs e)
{
}
}
abstract class BankSubject
{
public abstract void CreditTransactionRequest(double amount);
public abstract void CheckTransactionRequest(double amount);
}
class RealBankSubject : BankSubject
{
double bank;
public RealBankSubject(double m_bacc)
{
bank = m_bacc;
}
public override void CreditTransactionRequest(double num)
{
bank -= num;
}
public override void CheckTransactionRequest(double num)
{
bank += num;
}
}
Не реализует унаследованные абстрактные члены.... но почему? class CreditCardProxy: BankSubject { RealBankSubject realSubject; двойная сумма;
public CreditCardProxy (double m_bacc)
{
amount = m_bacc ;
}
нет подходящего метода для переопределения?... как это ошибка? У меня есть метод прямо здесь?
public override void CreditTransactionRequest()
{
if (realSubject == null)
{
realSubject = new RealBankSubject(amount);
}
realSubject.CreditTransactionRequest(amount);
}
public override void CheckTransactionRequest()
{
}
}
class CheckProxy : BankSubject
{
RealBankSubject realSubject;
double amount;
public override void CreditTransactionRequest()
{
}
public override void CheckTransactionRequest()
{
if (realSubject == null)
{
realSubject = new RealBankSubject(amount);
}
realSubject.CheckTransactionRequest(amount);
}
}
}
2 ответа
В вашем прокси вы не указываете сумму в качестве параметра метода:
public override void CreditTransactionRequest();
Так что это не может переопределить
public abstract void CreditTransactionRequest(double amount);
поскольку подпись метода не совпадает
CreditTransactionRequest
в CreditCardProxy
не принимает никаких аргументов, но CreditTransactionRequest
в BankSubject
делает. Вот почему вы не можете переопределить метод, подписи которого не совпадают.