У меня есть следующий код в моем проекте 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 собирается быть ориентированным на многопотоковое исполнение?
Инициализация статических полей является потокобезопасной: то есть среда выполнения .NET гарантирует, что ваше поле будет инициализировано только один раз в программе, независимо от того, сколько потоков обращаются к нему и в каком порядке.
Как указывает Андрей, сам метод Service.Get
должен быть потокобезопасным.
Сам по себе IoC выглядит нормально, но вся структура не будет потокобезопасной, если преобразователь
не является потокобезопасным. Если вы хотите иметь преобразователь для каждого потока, вы можете использовать атрибут [ThreadStatic]