Есть ли подводные камни для статического метода обработки событий? - PullRequest
2 голосов
/ 23 марта 2012

У меня есть следующий код (от https://github.com/timabell/PageStructureBuilder), и когда-либо хорошо осведомленный ReSharper предлагает мне сделать метод DataFactoryCreatingPage() статическим.

Безопасно ли это, или я буду представлять потенциальную ошибку, когда используется в качестве обработчика событий?

public void Initialize(InitializationEngine context)
{
    DataFactory.Instance.CreatingPage += DataFactoryCreatingPage;
    DataFactory.Instance.MovedPage += DataFactoryMovedPage;
}

void DataFactoryCreatingPage(object sender, PageEventArgs e)
{
    var parentLink = e.Page.ParentLink;
    var page = e.Page;
    parentLink = GetNewParent(parentLink, page);

    e.Page.ParentLink = parentLink;
}

Я не могу думать ни о каких проблемах, но мне интересно, есть ли пробел в моих знаниях.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 23 марта 2012

нет причины, по которой этот обработчик должен быть статическим; причина, по которой ReSharper предлагает сделать его статичным, вероятно, в том, что вы не используете какие-либо переменные экземпляра в его теле, поэтому нет никакого вреда, но обработчики событий не должны быть статичными, поскольку они должны иметь возможность изменять / использовать внутренние поля класса который обеспечивает реализацию обработчика

1 голос
/ 23 марта 2012

Resharper сделает это, если ваш метод использует только переданные параметры и не имеет доступа к переменным-членам.

Тебе не обязательно это делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...