Как вызывать событие при вызове метода?
Как при вызове метода Put задействовать событие AccountPutNotificationEvent, выполнить его и отключить?
public class Account
{
public delegate void AccountNotificationDelegate(object sender, AccountEventArgs e);
public event AccountNotificationDelegate AccountPutNotificationEvent;
public event AccountNotificationDelegate AccountWithdrawNotificationEvent;
public decimal Sum { get; private set; } = 0;
public void Put(int sum)
{
if (sum >= 0)
Sum += sum;
else
{
try
{
AccountPutNotificationEvent(this, new AccountEventArgs("Невозможно пополнить баланс на сумму менее, чем 0.01 у.е."));
}
catch (NullReferenceException)
{
Console.WriteLine("Обработчик не был зарегестрирован.");
}
}
}
public void Withdraw(int sum)
{
if (Sum >= sum)
Sum -= sum;
else
{
try
{
AccountWithdrawNotificationEvent(this, new AccountEventArgs($"На балансе недостаточно средств для снятия {sum} у.е. " +
$"пополните счёт на {sum - Sum} у.е. для совершения этой операции."));
}
catch (NullReferenceException)
{
Console.WriteLine("Обработчик не был зарегестрирован.");
}
}
}
}
class Program
{
static void Main()
{
Account account = new Account();
account.AccountPutNotificationEvent += AccountNotificationHandler;
account.Put(-100); // Вот здесь хотелось бы, чтобы метод Put автоматически регал событие и удалялся
}
public static void AccountNotificationHandler(object sender, AccountEventArgs e)
{
Console.WriteLine(e.Message);
}
}
}