Как получить экземпляр на основе текущей культуры потоков
Настройка:
LightinjectComposition.cs
serviceRegistry.Register<IdentityLocator>(f => IdentityLocator.GetInstance());
serviceRegistry.Register<IIdentity>(f => f.GetInstance<IdentityLocator>().Get());
// I could use this too:
// serviceRegistry.Register<IIdentity>(f => f.GetInstance<IdentityLocator>().Get(Thread.CurrentThread.CurrentCulture));
// There are N classes that have a dependency to IIdentity
serviceRegistry.Register<InterfaceN, ClassN>();
IdentityLocator извлекает экземпляр того же класса, который имеет два метода:
- Get (): извлекает экземпляр внутреннего класса на основе Thread.CurrentThread.CurrentCulture.
- Get (CultureInfo): извлекает экземпляр внутреннего класса на основе CultureInfo.
У меня есть два проекта: один для API (называемый Api) и другой для конфигурации контейнера DI (называемый Dependency, который содержит ссылки на другие проекты - карты, сервисы NHibernate и т. Д. И на который ссылается API). В проекте под названием Зависимость находится LightinjectComposition.cs.
Проблема заключается в том, что в NancyFX Bootstrapper текущая культура устанавливается на основе значений, полученных в запросе, но культура потока не изменяется после разрешения экземпляра.
Есть ли способ получить экземпляр, используя текущую культуру, или я делаю это неправильно (в отношении шаблонов IoC)?
В NancyFX Bootstrapper я установил такую культуру:
pipelines.BeforeRequest += context =>
{
Thread.CurrentThread.CurrentCulture = context.Culture;
return null;
};
Может быть, я должен передать экземпляр IdentityLocator зависимым классам вместо IIdentity?
Спасибо за прочтение!