Home     |     .Net Programming    |     cSharp Home    |     Sql Server Home    |     Javascript / Client Side Development     |     Ajax Programming

Ruby on Rails Development     |     Perl Programming     |     C Programming Language     |     C++ Programming     |     IT Jobs

Python Programming Language     |     Laptop Suggestions?    |     TCL Scripting     |     Fortran Programming     |     Scheme Programming Language


 
 
Cervo Technologies
The Right Source to Outsource

MS Dynamics CRM 3.0

Asp.Net Programming

Down/Up Cast for Control Events?


ASP.NET 2.0

I have web controls with their own event handlers that I need to
funnel into a central handler, eg

   TypicalEvent( object sender, TypicalEventArgs e )
   {
     HandleEverything( sender , (EventArgs)e );
   }

   LinkEvent( object sender, LinkEventArgs e )
   {
     HandleEverything( sender , (EventArgs)e );
   }

   SpecialEvent( object sender, SpecialEventArgs e )
   {
     HandleEverything( sender , (EventArgs)e );
   }

And the central event handler is

   HandleEverything( object sender , EventArgs e )
   {

   }

Within "HandleEverything", I would like to know the original Type of
what is in EventArgs and then cast it to the proper Type, because if
it's TypicalEventArgs there is a Value property, if it is
LinkEventArgs there is an AnchorText property, etc.

How can I use Reflection (or Generics?) to "uncast" and use?

Thanks.

Hi lucius,

I assume TypicalEventArgs/LinkEventArgs/SpecialEventArgs are all inherited
(directly or indirectly) from EventArgs. You can always use a child type
where a base type is needed without casting. A child type *is* always a
base type.

To cast a reference with base type to a child type, you need to explicitly
cast it, for example:

TypicalEventArgs e2 = (TypicalEventArgs) e;

Of course you need to determine if it's a TypicalEventArgs first:

if (e is TypicalEventArgs) {
    TypicalEvent(sender, (TypicalEventArgs) e);

}

Hope this helps.

Sincerely,
Walter Wang (waw@online.microsoft.com, remove 'online.')
Microsoft Online Community Support

==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.asp...
ications. If you are using Outlook Express, please make sure you clear the
check box "Tools/Options/Read: Get 300 headers at a time" to see your reply
promptly.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.

Add to del.icio.us | Digg this | Stumble it | Powered by Megasolutions Inc