Что такое предлагаемый метод получения контейнера Autofac изнутри класса в приложении? Предоставляет ли Autofac разрешение для разрешения свойства IContainer в классе или мне нужно хранить контейнер глобально после его сборки?Resolve IContainer
ответ
Для большинства целей вам понадобится IComponentContext
или ILifetimeScope
. Они автоматически предоставляются Autofac, поэтому все, что вам нужно сделать, это принять (конструктор) зависимость от одного из них, а текущий экземпляр будет введен.
Оба интерфейса обеспечивают стандартные операции Resolve()
, а ILifetimeScope
расширяет IComponentContext
, добавляя методы для запуска новых вложенных времен жизни.
Компоненты, которые хотят использовать услуги контейнера для доступа к другим компонентам, должны делать это в своей области, а не в глобальном IContainer
, чтобы можно было вернуть правильный экземпляр. Например. в запросе HTTP введенный код IComponentContext
или ILifetimeScope
будет единственным для текущего запроса.
Большинство проблем, требующих инъецированного контекста, также могут быть (часто более элегантно) преодолены с использованием видов отношений - см .: http://autofac.readthedocs.org/en/latest/resolve/relationships.html.
- 1. StructureMap, ObjectFactory и IContainer
- 2. Глобальный IContainer в Autofac
- 3. xuggler icontainer read from inputstream
- 4. Создание дочернего элемента управления IContainer
- 5. Проблема добавления компонента в IContainer
- 6. Пространства имен Ivy Resolve и задача Resolve
- 7. Resolve java.lang.NoClassDefFoundError
- 8. Assembly Resolve
- 9. AngularJS Resolve
- 10. Resolve System.OutOfMemoryException
- 11. ComponentNotRegisteredException при попытке решить из поддельного IContainer
- 12. Как работает Resolve в случае AsImplementedInterfaces?
- 13. angular2 HTTP Resolve Promise
- 14. Указать экземпляр Resolve - Autofac
- 15. findviewbyid - Can not Resolve
- 16. Resolve ошибка странно компилятор
- 17. Angular2 Resolve before CanActivate
- 18. Resolve эталонного метод
- 19. Resolve Fixnum ошибка
- 20. Resolve в угловом маршруте
- 21. Resolve предупреждение Logcat сообщение
- 22. команды Resolve от шины
- 23. MySQL skip-name-resolve
- 24. Угловой uiRouter Resolve исключения
- 25. Resolve Jslint warning
- 26. MATLAB: Resolve inf result
- 27. Resolve Shared AppGroup GUID
- 28. Resolve Pouch Couch DB
- 29. Брус Resolve R.Id
- 30. Resolve переменные из строки
Было бы неплохо отметить, что существует разница между автоматической проводкой этого класса и его созданием с использованием делегата. В моем случае следующее работало: 'builder.RegisterType()', в то время как при вызове объекта ObjectDisposedException при запуске 'IComponentContext' вызывается следующее:' builder.Register (c => new QueryProcessor (c)) ' , –
Steven
'builder.Register (c => новый QueryProcessor (c))' должен быть: 'builder.Register (c => новый QueryProcessor (c.Resolve()))' - 'c' является временным, живет на основе операции. НТН! –