StructureMap - проверить, был ли уже создан экземпляр какого-либо класса / интерфейса - PullRequest
1 голос
/ 16 января 2012

Мне нужно проверить, был ли экземпляр какого-либо интерфейса уже создан структурной картой. Я попытался ObjectFactory.GetInstance (), но это создает новый экземпляр T при вызове, и конкретный экземпляр T не существует. Я просто хочу проверить, был ли экземпляр T уже создан (не создавать новый). Мне нужно это, чтобы форсировать создание экземпляров через определенный класс).

Ответы [ 2 ]

4 голосов
/ 04 мая 2012

Вы должны быть в состоянии сделать это, используя:

ObjectFactory.Model.InstancesOf<IYourInterface>().First().ObjectHasBeenCreated();

Обратите внимание, что это работает только для экземпляров с жизненным циклом Singleton, HttpContext или Hybrid.

1 голос
/ 16 января 2012

Вы не можете спрашивать StructureMap, если он уже создал экземпляр интерфейса.

Однако у него есть много функций управления жизненным циклом, которые позволяют ему контролировать, создает ли он новый экземпляр или возвращает кэшированный экземпляр.что он был создан ранее.

Вы можете сказать StructureMap создать экземпляр HttpContextScoped, чтобы он возвращал тот же экземпляр для данного HTTP-запроса.

Похоже, что вы действительно хотите знать, этокак обрабатывать сеансы NHibernate в веб-приложении с помощью StructureMap.Попробуйте: http://trason.net/journal/2009/10/7/bootstrapping-nhibernate-with-structuremap.html

...