Шаблон прокси не найдено подходящих методов для переопределения? Помогите, я не уверен, что просто пошло не так

Это все в форме...

пространство имен 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 делает. Вот почему вы не можете переопределить метод, подписи которого не совпадают.

Другие вопросы по тегам