2

Я пытаюсь использовать функцию InstanceScope.HttpSession StructureMap, и у меня проблемы. Я следующий метод я использую для тестирования:Как использовать InstanceScope.HttpSession в StructureMap?

public static class StructureMapTest { 
    public static T Get<T>() { 
     ObjectFactory.Configure(x => x.AddRegistry(new RepositoryRegistry())); 
     return ObjectFactory.GetInstance<T>(); 
    } 
} 

Мой класс RepositoryRegistry выглядит следующим образом:

public class RepositoryRegistry : Registry { 
    public RepositoryRegistry() { 
     ForRequestedType<IClientRepository>() 
      .CacheBy(InstanceScope.HttpSession) 
      .TheDefault.Is.OfConcreteType<ClientRepository>(); 
    } 
} 

Так что в моем коде клиента (контроллер ASP.NET MVC) Я делаю что-то вроде следующие:

public ActionResult InjectionTest() { 
    return Content(DataProvider.Clients.CreatedDate.ToString()); 
} 

И каждый раз, когда я вызываю этот контроллер даже из того же сеанса, каждый раз я получаю новый экземпляр. Что я здесь делаю неправильно?

+0

Вы попробовали мой ответ? У меня нет этой проблемы, и главное отличие в том, что моя конфигурация находится на global.asax – eglasius

ответ

1

Переместить ObjectFactory.Configure для глобального asax. Вы не должны постоянно перенастраивать структуру структуры каждый раз, когда запрашивается объект.