Каков правильный / рекомендуемый способ запуска событий и обратных вызовов во время процесса? - PullRequest
0 голосов
/ 19 февраля 2019

Я отвечаю за архитектуру внутренней кодовой базы / SDK.Мы конфликтуем о том, как стандартизировать порядок запуска обратных вызовов и событий внутри API.Мы обеспокоены двумя случаями.

class Foo {

    public event Action StuffDone;

    public void DoStuff(Action callback) {

        StuffDone?.Invoke();
        callback?.Invoke();

    }

}

Мы поняли, что иногда порядок вызова события и обратного вызова меняется на противоположный, и это кажется очень противоречивым, но мы не можем найти какой-либоресурсы для резервного копирования одного или другого способа заказа.

Представлены две причины:

  1. Позвоните на номер event до callback, поскольку event является частью процесса, а callback является просто сигналом завершения процесса для вызывающего абонента.

  2. Вызовите event после * callback, потому что вызывающий метод / инициатор процесса должен быть сначала уведомлен о завершении процесса, а не другие объекты (через event).

Буду признателен за все отзывы и ресурсы!

1 Ответ

0 голосов
/ 19 февраля 2019

Вы хотите сделать это явным.Дело в том, когда вы вызываете вопросы поведения.Это означает, что вы должны подумать о том, как будет использоваться ваше мероприятие, и разработать соответствующий дизайн.Вы хотите одно, другое или оба?В любом случае попробуйте сделать имя события очень явным.

public event Action BeforeStuff;
public event Action AfterStuff;

public void DoStuff(Action callback) 
{
    if (callback == null)
        throw new ArgumentNullException(nameof(callback));
    BeforeStuff?.Invoke();
    callback();
    AfterStuff?.Invoke();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...