考慮以下代碼片段:靜態委託是否線程安全?
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);
在靜態類的ApplicationContext線程安全的意義上,多線程可以調用他們的代表?
如果我採用這種方法,我會面臨哪些潛在的問題?
請詳細解釋一下靜態代理的含義。 – leppie 2010-06-15 07:29:51
@leppie在代碼示例中,變量static Func AuthenticationProvider是一個靜態委託。 –
leypascua
2010-06-15 07:32:37