Как построить график разрешенных экземпляров с Autofac? - PullRequest
0 голосов
/ 15 ноября 2018

После всех регистраций я делаю ContainerBuilder.RegisterCallback и подписываюсь на все события IComponentRegistration.Preparing и IComponentRegistration.Activating, чтобы иметь возможность обрабатывать все активации.С этими двумя событиями я могу построить дерево, порядок событий выглядит следующим образом:

  • Подготовка: Root
    • Подготовка: FirstLevel_A
    • Активация: FirstLevel_A
    • Подготовка: FirstLevel_B
      • Подготовка: SecondLevel_C
      • Активация: SecondLevel_C
    • Активация: FirstLevel_B
  • Активация: Root

Но что, если некоторые регистрации не Per Dependency и у меня будет график вместо дерева.Можно ли справиться с этим делом?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Согласно этому ответу есть другой способ обработки этих событий:

Если вы хотите стать более любопытным, вы можете настроить некоторые обработчики событий в контейнере ChildLifetimeScopeBeginning, ResolveOperationBeginning, ResolveOperationEnding и CurrentScopeEnding события.

  • Во время ChildLifetimeScopeBeginning вам нужно будет настроить что-то, чтобы автоматически присоединяться к любому дочернему событию ResolveOperationBeginning всей жизни.

  • В течение ResolveOperationBeginning вы будете регистрировать, что будет разрешено.

  • В течение ResolveOperationEnding вы будете регистрировать любые исключения

  • В течение CurrentScopeEnding вам необходимо отписаться от любых событий в этой области, чтобы сборщик мусора мог очистить область действия времени жизни со всеми его экземплярами.

Сложнее, но надо делать работу.

0 голосов
/ 15 ноября 2018

Не ответ, но он слишком велик для комментария.

AutoFac - это отличный контейнер IoC, но у него есть 2 основных проблемы. Одним из них является ужасный API регистрации, а другим - полное отсутствие диагностики. Первоначальный автор AutoFac однажды попытался создать приложение, которое поможет с этим: Whitebox . Разработка остановилась и перешла на Autofac Analysis , который не был активным годами.

То, что вы хотите сделать, требует глубокого понимания внутренней работы AutoFac, поэтому вы можете проверить источники идей о том, как выполнить то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...