Hy, ребята,
В настоящее время я пытаюсь реализовать некоторые пользовательские циклы ILife для StructureMap.
В зависимости от событий жизненный цикл связан со всеми объектами, которые должны быть удалены из жизненного цикла.
Вот регистрация объекта.
Я получаю жизненный цикл от своего менеджера для типа плагина и конкретного типа, используя область для определения жизненного цикла.
registry.For(pluginType)
.LifecycleIs(_lifecycleManager.GetLifecycle(pluginType, instance.GetType(), lifecycleScope))
.Use(instance);
Я использую LifecycleManager для сохранения знаний о моих объектах, потому что мне нужно проверить, существуют ли объекты уже и создать / вернуть их, только если я передам createIfMissing = true.
// determine if an instance already exists for the plugin type
bool doesInstanceExist = _lifecycleManager.ContainsInstance(pluginType);
if (createIfMissing)
{
// create a new instance or get an already existing one
container = DependencyInjectionContainer.GetInstance<T>();
}
else
{
// only get an existing instance
if (doesInstanceExist)
{
container = DependencyInjectionContainer.GetInstance<T>();
}
}
После того, как объект завершил свою работу или сработало связанное событие, экземпляр объекта следует удалить и утилизировать.
Моя проблема в том, что я не могу найти способ удалить ссылки, содержащиеся в классе StructureMap.Profile, они всегда продолжают зависать.
Как я могу удалить все ссылки на мои объекты, но сохранить конфигурацию?