Tenir compte cet extrait de code:Les délégués statiques sont-ils sûrs pour les threads?
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);
Les délégués sont dans le thread-safe ApplicationContext de classe statique dans le sens où plusieurs threads peuvent-les invoquer?
À quels problèmes potentiels serai-je confronté si je poursuis cette approche?
S'il vous plaît expliquer plus ce que vous entendez par délégué statique. – leppie
@leppie Dans l'exemple de code, la variable Func statique AuthenticationProvider est un délégué statique. –
leypascua