Лично я обычно избегаю создания событий, предпочитая вместо этого создавать delegate
. Если есть какая-то особая причина, по которой вам требуется конкретное событие, пожалуйста, проигнорируйте этот ответ. Причины, по которым я предпочитаю использовать delegate
, - это то, что вам не нужно создавать дополнительные классы EventArgs
, и я также могу установить свои собственные типы параметров.
Во-первых, давайте создадим делегат:
public delegate void TypeOfDelegate(YourDataType dataInstance);
Теперь геттер и сеттер:
public TypeOfDelegate DelegateProperty { get; set; }
Теперь давайте создадим метод, который соответствует и выезд из параметров delegate
:
public void CanBeCalledAnything(YourDataType dataInstance)
{
// do something with the dataInstance parameter
}
Теперь мы можем установить этот метод как один (из многих) обработчиков для этого delegate
:
DelegateProperty += CanBeCalledAnything;
Наконец, давайте назовем наш delegate
... это эквивалентно повышением события:
if (DelegateProperty != null) DelegateProperty(dataInstanceOfTypeYourDataType);
Примечания важной проверкой null
. Итак, это все! Если вы хотите больше или меньше параметров, просто добавьте или удалите их из объявления delegate
и способ обработки ... прост.
В чем проблема, с которой вы сталкиваетесь, почему вы не можете применить учебник? –
Я не работаю D3, но кажется, что объект LineGraph не имеет свойства толщины? –
Можете ли вы опубликовать некоторый код, чтобы мы могли понять, в чем проблема? –