Как получить экземпляр на основе текущей культуры потоков

Настройка:

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?

Спасибо за прочтение!

0 ответов

Другие вопросы по тегам