0

Can I update only selected variables within a custom EventArgs class or do I need to update all of them at the same time? For instance when this method is called:

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

< AMENDED; it's been pointed the above is incorrect syntax for updating EventArgs using a Method call.. ie... the 'new' keyword is a new EventArg not updating one... which begs the question.. how do you update EventArgs via a method call either full or in part (only some of the variables not all of them)... >

can I just leave out the variables I don't want to update ..' TraderEventArgs(,,var3) ??

or will that leave the TraderEventArgs.var1 & TraderEventArgs.var2 empty??

This is a question pertaining to whether or not I need to have multiple EventArgs classes created or whether I can store all (sometimes unrelated) non-pertinent data together in one custom EventArgs class.

CORRECTION: I am asking whether or not it's feasible to store sometime unrelated data together in one event argument class which may or may not be updated at the same time as other non-related data... I may not have been clear about that previously...

CraigJSte
  • 912
  • 6
  • 17
  • 33
  • 1
    As my answer indicates, it feels like we're missing quite a bit of context here - either that, or you haven't understood how separate objects work in C#. Please read http://tinyurl.com/so-hints and edit your question to provide more information. – Jon Skeet Mar 23 '11 at 17:18
  • is the purpose of these posts to analyze how someone can be incorrect or to assist with answers? Obviously, confusion results in issues pertaining to contextual understanding; but isn't the answer still the same? – CraigJSte Mar 23 '11 at 17:28
  • I'm going with Jon on this one. The code above implies that maybe you need to spend some time understanding what eventargs are for... Perhaps if you included the class definition of TraderEventArgs and what your intended usage is we might be better able to help. Also, with regards to analysis vs assistance, they are usually one and the same. Part of the goal here is to educate other programmers on not only a fast/dirty "answer, but also better ways or even why the chosen design/architecture may not lead to the results they want. – NotMe Mar 23 '11 at 17:29
  • @CraigJStr: I think you'll find that if you put a bit of time into writing a coherent question, there will be many people happy to assist with an answer. But at the moment, you're asking us to help you update something without any indication of where that "thing" is, or whether the type you're using is mutable, etc. I think my history shows that I'm quite happy to help people who write a decent question... – Jon Skeet Mar 23 '11 at 17:32
  • I have corrected the question. @Jon, I know you and @Chris are just trying to help and believe me, I appreciate it. – CraigJSte Mar 23 '11 at 17:40
  • This is an incorrect assumption on my part, EventArgs are not useful for storing and updating data... is my conclusion upon studying .Net best practices... (which should have been stressed in my question, initially) Along with event delegate, they manage data between events, is the best use for them... classes and structs store information. – CraigJSte Mar 23 '11 at 22:49

1 Answers1

1

If you mean this:

new TraderEventArgs(,,var3) 

that's simply invalid syntax.

Note that you're declaring a new variable here (t) and creating a new object - there is no "existing" object to modify, as far as we can see. You talk about updating variables, but that's not going to happen through a new call.

EDIT: Now that we can see the TraderEventArgs class, it's reasonably clear that you can't update it at all - both the Price and Shares properties are read-only (they have getters but no setters). There's no way of modifying the price and shares of an existing instance. Now you could potentially change the class of course (if it's yours to change)... or you may be able to just create a new instance and tell whatever currently has a reference to the old instance to use the new one instead. We still can't really tell without more information about what's going on.

From the linked post, I think you're missing the point of event args in general: they're usually provided by whatever raises the event. If the event raising code (e.g. the click code in a Button type) doesn't know anything about your custom event args, then you can't just crowbar them in.

Community
  • 1
  • 1
Jon Skeet
  • 1,421,763
  • 867
  • 9,128
  • 9,194
  • which points out that I am using the wrong syntax, but does not answer the question. – CraigJSte Mar 23 '11 at 17:19
  • @CraigJSte: Your question is so vague that I've answered it as best I can. Even with the edit, you still haven't shown any reference to an existing instance of `TraderEventArgs`. – Jon Skeet Mar 23 '11 at 17:26
  • I am asking how to reference the instance, then how to update it. Your question is also vague to me. Are you asking that I post the TraderEventArgs class itself? If so, it is posted here... http://stackoverflow.com/questions/5405929/how-to-access-custom-eventargs-class-in-button-click-event – CraigJSte Mar 23 '11 at 17:35
  • @CraigJSte: Which instance? You claim that there's one to update, but we've no idea where it's coming from. You've posted a single method which doesn't accept it as a parameter... do you have an instance variable of type `TraderEventArgs`? Or is it coming from somewhere else? Thanks for the link to the class - that certainly helps. I'll edit my answer with respect to that. – Jon Skeet Mar 23 '11 at 17:37
  • regarding the amended answer.. thank you.. it's very helpful as a follow up - you are right from the prev posts I was confused about how to pass event arg information, specifically but am clear now - and am curious if using event Args for (let's say 'static' information) updated multiple times is going against what event args are used for... And then if so, should I use a struct class or something else?? – CraigJSte Mar 23 '11 at 17:48
  • @CraigJSte: While slightly unusual, there are definitely situations where event args are deliberately *designed* to be modified along the way - in particular, any event args which allow handlers to cancel the operation work that way. Now whether that's appropriate for *your* situation is a different matter... I still don't really understand enough of the big picture to suggest an overall approach. – Jon Skeet Mar 23 '11 at 17:53