Как написать метод, который будет выполняться перед каждым другим методом?

243
04 октября 2017, 06:49

Есть метод A и методы B,С,D,E. Нужно метод A выполнить перед каждым методом B,С,D,E, когда они будут запускаться и если метод A будет false, то выйти и не выполнять следующий код. Фактически нужно вписать выполнение метода А в каждый из методов.
Но есть ли какой-то лучшей способ обёртки, что б не прописывать одинаковые действия в каждом из методов и наследовать класс А (с методом А) и пропускать всё через него?

Answer 1
bool A()
{
    bool result = false;
    // действия
    return result; // если тут вернёт false, ваши методы будут прекращать работу
}
void B()
{
    if (!A()) return;
    // Действия
}

Аналогично, как в B(), будет и в других методах (C-E)

Также есть вариант с использованием делегатов

delegate bool MyDelegate;
public Main()
{
    MyDelegate = A;
}
bool A()
{
    bool result = false;
    // действия
    return result; // если тут вернёт false, ваши методы будут прекращать работу
}
void B()
{
    if (!MyDelegate.Invoke()) return;
    // Действия
}
Answer 2
bool Проверка()
{
    return true; // вернуть false если что-то не так
}
void ОбычныйМетод()
{
    if (!Проверка()) return;
    // какие-то действия
}
READ ALSO
Два экземпляра класса при обработке как-бы “склеиваются”

Два экземпляра класса при обработке как-бы “склеиваются”

Здравствуйте, в классе (C) создаются и используются два экземпляра класса-наследника (B : A), поля класса (C) взаимодействуют с парой публичных...

258
DllNotFoundException: Не удается загрузить DLL

DllNotFoundException: Не удается загрузить DLL

Установил через диспетчер пакетов nuget библиотеку pjsuaиспользуя using подключаю ее и все нормально, могу использовать классы и методы

433
Почему нельзя сложить в C# byte + byte?

Почему нельзя сложить в C# byte + byte?

Я знаю что нужно выполнить преобразование типов, но хотел бы разобраться в механизмеПочему этот код выдает ошибку?

309
Работа с usb устройствами

Работа с usb устройствами

Есть примерно 10 USB устройств подключенных через USB-хабДля работы с устройствами есть библиотека производителя

290