我在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