Аргументы событий Лучшие практики и вопросы обновления - PullRequest
0 голосов
/ 23 марта 2011

Могу ли я обновить только выбранные переменные в пользовательском классе EventArgs или мне нужно обновить все из них одновременно? Например, когда этот метод вызывается:

 public void updateEvents(string var1, string var2, string var3)
 {
     // reference a custom EventArg class
     TraderEventArgs t = new TraderEventArgs(var1, var2, var3);
 }

<ИЗМЕНЕНО; как уже отмечалось выше, неправильный синтаксис для обновления EventArgs с использованием вызова метода .. т.е. ... ключевое слово "new" - это новый EventArg, а не обновляющий ..., что вызывает вопрос .. как обновить EventArgs с помощью метода вызывать либо полностью, либо частично (только некоторые переменные, а не все) ...>

могу ли я просто пропустить переменные, которые не хочу обновлять .. 'TraderEventArgs (,, var3) ??

или из-за этого TraderEventArgs.var1 и TraderEventArgs.var2 останутся пустыми ??

Это вопрос, касающийся того, нужно ли мне создавать несколько классов EventArgs или я могу хранить все (иногда не связанные) данные вместе в одном пользовательском классе EventArgs.

ИСПРАВЛЕНИЕ: Я спрашиваю, возможно ли хранить когда-либо несвязанные данные вместе в одном классе аргумента события, который может обновляться или не обновляться одновременно с другими несвязанными данными ... Возможно, я не совсем ясно об этом ранее ...

1 Ответ

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

Если вы имеете в виду это:

new TraderEventArgs(,,var3) 

это просто неверный синтаксис.

Обратите внимание, что вы объявляете новую переменную здесь (t) и создаете новый объект - там - это нет "существующего" объекта для изменения, насколько мы можно увидеть. Вы говорите об обновлении переменных, но это не произойдет при вызове new.

РЕДАКТИРОВАТЬ: Теперь, когда мы можем видеть класс TraderEventArgs , достаточно ясно, что вы не можете обновить его вообще - свойства Price и Shares доступны только для чтения (они имеют геттеры, но нет сеттеров). Там нет никакого способа изменить цену и доли существующего экземпляра. Теперь вы можете изменить класс, конечно, (если это ваш выбор) ... или вы можете иметь возможность просто создать новый экземпляр и сообщить то, что в данный момент имеет ссылку на old экземпляр, чтобы использовать новый вместо этого. Мы до сих пор не можем рассказать без дополнительной информации о том, что происходит.

Из связанного поста, я думаю, вы вообще упускаете аргументы события: они обычно предоставляются тем, что вызывает событие. Если код вызова события (например, код клика в типе Button) ничего не знает о ваших пользовательских аргументах событий, вы просто не можете их ломать.

...