I think my question may be specific to Timer-fired events, and more specifically to classes that inherit from System.Timers.Timer. When an instance of an inherited class fires the Elapsed event, the event handler receives an Object of the base class, not the inherited class. My question is, how can casting a Timer back to the inherited class restore the other properties within that inherited class?

Maybe this question is generic to all inherited classes. If I have an instance of a base class for which I have created an inherited class, what happens when you cast that base class object to an inherited class object? What sets the values of all the other parameters and objects within that inherited class? The constructor for the inherited class?