Что представляет собой «создание избыточного делегата»? - PullRequest
14 голосов
/ 31 января 2009

Я регистрировался на событие в своем классе, и, как обычно, я ленился и просто использовал функцию автозаполнения, встроенную в Visual Studio 2008 Pro, которая автоматически создает создание делегата и связанный с ним метод.

public abstract class FooBase
{
    protected event EventHandler<MyValueChangedArgs> MyValueChanged;

    protected FooBase()
    {
        MyValueChanged +=
            new EventHandler<MyValueChangedArgs>(HandleMyValueChanged);
    }

    private void HandleMyValueChanged(object sender, MyValueChangedArgs e)
    {
        // Some handling logic
    }
}

Обычно я не думаю дважды, когда Visual Studio генерирует обработчик событий для меня, но затем я получил рекомендацию от Refactor! Pro "Удалить избыточное создание делегата". Результатом рекомендации является:

public abstract class FooBase
{
    protected event EventHandler<MyValueChangedArgs> MyValueChanged;

    protected FooBase()
    {
        MyValueChanged += HandleMyValueChanged;
    }

    private void HandleMyValueChanged(object sender, MyValueChangedArgs e)
    {
        // Some handling logic
    }
}

При каких обстоятельствах создание делегата избыточно и когда уместно создание делегата?

Спасибо.

Ответы [ 2 ]

6 голосов
/ 31 января 2009

Извините за это. У нас просто не было времени в расписании продукта для создания более короткого кода, когда анонимные методы были добавлены в C #.

Я всегда редактирую сгенерированный код, чтобы удалить дополнительный синтаксис.

6 голосов
/ 31 января 2009

Я думаю, что Refactor! говорит вам, что линия

MyValueChanged += new EventHandler<MyValueChangedArgs>(HandleMyValueChanged);

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

При каких обстоятельствах делегат создание избыточно и когда это создание делегата подходит?

В сгенерированном дизайнером коде ...

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