Шаблон подписи события в .NET

Оператор вставки потока (operator <<) имеет явную перегрузку для char *, поэтому он обрабатывается особым образом.

5
задан Gaz 29 October 2008 в 15:39
поделиться

4 ответа

Это главным образом для непротиворечивости и управления версиями — с sender парамать как всегда Система. Объект и args параметр как всегда Система. EventArgs или dervied класс этого, можно измениться, аргумент отправителя передал ему, а также измените тип EventArgs впоследствии, не взламывая существующего кода.

Целая идиома обработки событий.NET была разработана для поддержки компонентно-ориентированной разработки, где код вызова не находится под контролем разработчика компонента с событиями.

3
ответ дан 13 December 2019 в 05:44
поделиться

В C# 1.0 конвенция не имела большой смысл. В C# 2.0, где существует определенное количество различия делегата, оно имеет больше смысла.

Если у Вас есть метод обработки событий, который действительно не заботится о параметрах, например.

public void SaveDocument(object sender, EventArgs args)
{
    // Save the document here
}

можно теперь использовать тот метод для подписки на любое событие, которое следует конвенции, даже если фактический отправитель или args более строго вводятся. Это означает, что можно использовать тот же обработчик для события клавиатуры, нажатие кнопки и т.д.

4
ответ дан 13 December 2019 в 05:44
поделиться

Это - хороший вопрос. Еретический, но хороший. Я недавно считал сообщение в блоге (я не могу найти, что ссылка - делает у любого есть та ссылка), который разоблачил миф, что необходимо всегда переопределять Систему. EventArgs для обеспечения хорошей обработки событий.

Я - все для конвенции и после правил, но это - то, что я думаю, может быть обсужден, чтобы быть сгибаемым - если не преодолимый. Будучи должен постоянно переопределить Систему. EventArgs для каждого события добавляет к связи стандартной программы - теперь существует еще одна вещь отслеживать.

Наличие "e", который предоставляет участникам, не больше полезно или интуитивно, чем хорошо-именованный-набор аргументов. Я не думаю, что спор может быть выигран для диспетчеризации рекомендуемой Системы. Шаблон EventArg, но я вставил с Вами для приведения того аргумента.

RP

3
ответ дан 13 December 2019 в 05:44
поделиться

Это отделяет вызывающую сторону от вызываемого.

2
ответ дан 13 December 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: