Что представляет собой "избыточное создание делегатов"?
Я регистрировался на событие в своем классе и, как обычно, был ленив и просто использовал функцию автозаполнения, встроенную в 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
}
}
В каких обстоятельствах избыточность делегирования создается и когда создается делегирование?
Спасибо.
Ответы
Ответ 1
Я думаю, что Refactor! сообщает, что строка
MyValueChanged += new EventHandler<MyValueChangedArgs>(HandleMyValueChanged);
Может быть сокращен, и компилятор выведет создание обработчика события и аргумент типа TEventArgs...
При каких обстоятельствах делегат создание избыточно и когда создание делегата?
О сгенерированном дизайном коде...
Ответ 2
Извините. У нас просто не было времени в графике продукта, чтобы генерировать более короткий код, когда анонимные методы были добавлены в С#.
Я всегда редактирую сгенерированный код, чтобы удалить дополнительный синтаксис.