我在ASP.NET項目C#ASP.NET線程安全的靜態只讀字段
public sealed class IoC
{
private static readonly IDependencyResolver resolver =
Service.Get("IDependencyResolver") as IDependencyResolver;
static IoC()
{
}
private IoC()
{
}
public static IDependencyResolver Container
{
get
{
return resolver;
}
}
}
public static class Service
{
public static object Get(string serviceName)
{
// Code to create and return instance...
}
}
下面的代碼是IoC.Container將是線程安全的?
從我的理解Service.Get將被調用一次每個應用程序域,所以每個線程將收到相同的解析器實例是否正確? – Emilian 2010-03-02 22:36:30
您的「私有靜態只讀IDependencyResolver解析器」字段將僅在每個應用程序域中初始化一次,爲正確。在'Get'內部仍然有可能做不安全的事情,但我想這不是你要求的。 – 2010-03-02 22:43:13
In Service.Get我只從web.config讀取解析器類型,並使用Activator獲取該類型的解析器實例。但我擔心的是,處理我的請求的每個線程都使用相同的解析器實例。 – Emilian 2010-03-02 22:46:02