I have an extension method on the HttpApplicationState object for getting my IoC container out of the application. This same code will also create the container if it doesn't exist.
I have 2 questions:
- Is my code actually thread safe as I intend it to be
- Is this considered the best practice for dealing with the application state
Code as follows:
private const string GlobalContainerKey = "UnityContainerKey";
public static IUnityContainer GetContainer(this HttpApplicationState application)
{
var container = application[GlobalContainerKey] as IUnityContainer;
if (container == null)
{
try
{
application.Lock();
container = application[GlobalContainerKey] as IUnityContainer;
if (container == null)
{
container = new UnityContainer();
application[GlobalContainerKey] = container;
}
}
finally
{
application.UnLock();
}
}
return container;
}