Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 772887
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 14, 20262026-05-14T18:52:30+00:00 2026-05-14T18:52:30+00:00

I ran across this pattern in the code of a library I’m using. It

  • 0

I ran across this pattern in the code of a library I’m using. It sets state within the event raising method, but only if the event is not null.

protected virtual void OnMyEvent(EventArgs e)
{
  if(MyEvent != null)
  {
     EnsureChildControls(); 
     MyEvent(this,e);
  }
}

Which means that the state is not set when overriding the method:

protected override void OnMyEvent(EventArgs e)
{
   base.OnMyEvent(e);
   Debug.Assert( /* Child controls ensured */); // This fails
}

but is only set when handling the event:

foo.MyEvent += (o, args) => Debug.Assert(/* Child controls ensured */); // This passes

Setting state within the if(MyEvent != null) seems like bad form, but I’ve checked the Event Design Guidelines and it doesn’t mention this.

Do you think this code is incorrect? If so, why? (Reference to design guidelines would be helpful).

Edit for Context:

It’s a Control, I’m trying to create subclass of it, and the state that it’s setting is calling EnsureChildControls() conditionally based upon there being an event handler. I can call EnsureChildControls() myself, but I consider that something of a hack.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-14T18:52:32+00:00Added an answer on May 14, 2026 at 6:52 pm

    This answer provides an MSDN quote that answers my question:

    When should you override OnEvent as opposed to subscribing to the event when inheritting

    The protected OnEventName method also
    allows derived classes to override the
    event without attaching a delegate to
    it. A derived class must always call
    the OnEventName method of the base
    class to ensure that registered
    delegates receive the event.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I ran across this snippet in an internal web site, but I'm having trouble
I ran across this chunk of code (modified) in our application, and am confused
Ran across this, but I cannot quite grasp it, especially beginning with the LIMIT
I ran across this code in one of our Entity Framework applications. I know
In the Android open-source qemu code I ran across this line of code: machine->max_cpus
I ran across this segment of code (in .m implementation file in an IBAction
I recently ran across this code in one of the projects I'm working on,
While reading Programming Ruby , I ran across this code snippet: while gets num1,
I am reviewing some perl code and ran across this line $> = $<;
I ran across some code like this today; having a flow control flag that

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.