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 856605
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 15, 20262026-05-15T08:15:38+00:00 2026-05-15T08:15:38+00:00

Consider this code snippet: public static class ApplicationContext { private static Func<TService> Uninitialized<TService>() {

  • 0

Consider this code snippet:

public static class ApplicationContext
{
    private static Func<TService> Uninitialized<TService>()
    {
        throw new InvalidOperationException();
    }

    public static Func<IAuthenticationProvider> AuthenticationProvider = Uninitialized<IAuthenticationProvider>();
    public static Func<IUnitOfWorkFactory> UnitOfWorkFactory = Uninitialized<IUnitOfWorkFactory>();
}

//can also be in global.asax if used in a web app.
public static void Main(string[] args) 
{
    ApplicationContext.AuthenticationProvider = () => new LdapAuthenticationProvider();
    ApplicationContext.UnitOfWorkFactory = () => new EFUnitOfWorkFactory();
}

//somewhere in the code.. say an ASP.NET MVC controller
ApplicationContext.AuthenticationProvider().SignIn(username, true);

Are delegates in the static class ApplicationContext thread-safe in the sense that multiple-threads can invoke them?

What potential problems will I face if I pursue this approach?

  • 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-15T08:15:39+00:00Added an answer on May 15, 2026 at 8:15 am

    Are delegates in the static class
    ApplicationContext thread-safe in the
    sense that multiple-threads can invoke
    them?

    Yes. But a delegate is only as thread-safe as the method it points to.

    So, if the methods called by your AuthenticationProvider and UnitOfWorkFactory delegates are thread-safe, then so will your delegates be.

    In the code you’ve provided, these are simply constructor calls. It doesn’t really get much more thread-safe than that (unless you’ve got some crazy threading logic in your constructors — I certainly hope not).

    What potential problems will I face if
    I pursue this approach?

    None that result directly from invoking your delegates. Again, the only concerns regarding thread-safety that you should be worried about are those that pertain to the actual methods called by your delegates (in this case, the constructors for LdapAuthenticationProvider and EFUnitOfWorkFactory).

    UPDATE: limpalex made a good observation: in the code you’ve posted, you are actually calling the Uninitialized<TService> method in the static constructor for your ApplicationContext class, which will throw an exception. What you want to do is assign your delegates to the method. I think what you’re going for is something like this:

    // note: changed return type to TService to match Func<TService> signature
    private static TService Uninitialized<TService>()
    {
        throw new InvalidOperationException();
    }
    
    // note: removed () symbols to perform assignment instead of method call
    public static Func<IAuthenticationProvider> AuthenticationProvider = Uninitialized<IAuthenticationProvider>;
    public static Func<IUnitOfWorkFactory> UnitOfWorkFactory = Uninitialized<IUnitOfWorkFactory>;
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 459k
  • Answers 459k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer This CSS should fix your problem (at least it did… May 15, 2026 at 11:26 pm
  • Editorial Team
    Editorial Team added an answer There's no built-in mechanism to do this. Something like PostSharp… May 15, 2026 at 11:26 pm
  • Editorial Team
    Editorial Team added an answer You forgot the "action = nameofyourpage.php" inside the form markup.… May 15, 2026 at 11:26 pm

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

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.