Изменения документа Внедрение зависимостей в .NET | Марк Симан
Редактировал(а) Alexandr Fokin 2024/10/02 10:51
<
>
отредактировано Alexandr Fokin
на 2024/01/04 19:24
на 2024/01/04 19:24
отредактировано Alexandr Fokin
на 2020/01/24 14:45
на 2020/01/24 14:45
Изменить комментарий:
К данной версии нет комментариев
Комментарий
-
Свойства страницы (1 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Содержимое
-
... ... @@ -1,410 +8,9 @@ 1 -| |В данной книге рассматриваются концепции DI и IOC. А также приводятся примеры взаимодействия с framework IOC контейнерами. 2 -Приводятся примеры паттернов и анти-паттернов. 3 -Управление жизненным циклом зависимостей. 4 -| |((( 5 -|(% style="width:363px" %)Преобразование абстракций в конкретные типы 6 -(Процесс разрешения)|(% style="width:1087px" %)((( 7 - [[image:DI IOC.jpg]] 8 8 9 -* DI - процесс внедрения типов при создании экземпляров. 10 -* Poor man DI - ручное явное внедрение без использования DI(IOC) контейнера. 11 -* DI(IOC) контейнер - инструмент позволяющий производить внедрение типов автоматически на основе некоторого, сконфигурированного пользователем, маппинга (абстракция -> тип) 12 -* IOC подразумевает наличие библиотеки или фреймворка, контролирующего часть жизненного цикла приложения и предоставляющий интерфейс для реализации некоторый логики в рамках жизненного цикла разработчику. 13 -))) 14 -|(% style="width:363px" %)Типы внедрений:|(% style="width:1087px" %)((( 15 -* Внедрение в конструктор (обязательное) 16 -* Внедрение в свойство (необязательное, предполагает возможность наличия значения по умолчанию) 17 -* Внедрение в метод (внедрение при вызове метода) 18 -* Фабрика 19 -))) 20 -|(% style="width:363px" %) |(% style="width:1087px" %) 21 -))) 22 -| | 2 +[[image:DI IOC.jpg]] 23 23 4 +В данной книге рассматриваются концепции DI и IOC. А также приводяться примеры взаимодействия с framework IOC контейнерами. 5 +Приводяться примеры паттернов и антипаттрновэ. 6 +Управление жизненным циклом зависимостей. 24 24 25 ----- 26 26 27 -{{html}} 28 -<ul> 29 - 30 - 31 - <li class=" "> 32 - <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/putting-dependency-injection-on-the-map" class="bgg">Появление механизма внедрения зависимостей</a></span> 33 - <ul style="display: block;"> 34 - 35 - 36 - <li class=" "> 37 - <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/putting-dependency-injection-on-the-map/a-dependency-injection-tasting-menu" class="bgg">1. "Дегустационное меню" механизма внедрения зависимостей</a></span> 38 - <ul style="display: block;"> 39 - 40 - 41 - <li class=" no-child"> 42 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/putting-dependency-injection-on-the-map/a-dependency-injection-tasting-menu/writing-maintainable-code" class="bgg">1.1. Написание поддерживаемого кода</a></span> 43 - </li> 44 - <li class=" no-child"> 45 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/putting-dependency-injection-on-the-map/a-dependency-injection-tasting-menu/hello-di" class="bgg">1.2. Привет DI</a></span> 46 - </li> 47 - <li class=" no-child"> 48 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/putting-dependency-injection-on-the-map/a-dependency-injection-tasting-menu/what-to-inject-and-what-not-to-inject" class="bgg">1.3. Что внедрять, а что не внедрять</a></span> 49 - </li> 50 - <li class=" no-child"> 51 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/putting-dependency-injection-on-the-map/a-dependency-injection-tasting-menu/di-scope" class="bgg">1.4. Область применения DI</a></span> 52 - </li> 53 - <li class=" no-child"> 54 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/putting-dependency-injection-on-the-map/a-dependency-injection-tasting-menu/summary" class="bgg">1.5. Резюме</a></span> 55 - </li> 56 - 57 - </ul> 58 - </li> 59 - <li class=" "> 60 - <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/putting-dependency-injection-on-the-map/a-comprehensive-example" class="bgg">2. Комплексный пример</a></span> 61 - <ul> 62 - 63 - 64 - <li class=" no-child"> 65 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/putting-dependency-injection-on-the-map/a-comprehensive-example/doing-it-wrong" class="bgg">2.1. Как не стоит поступать</a></span> 66 - </li> 67 - <li class=" no-child"> 68 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/putting-dependency-injection-on-the-map/a-comprehensive-example/doing-it-right" class="bgg">2.2. Как действовать правильно</a></span> 69 - </li> 70 - <li class=" no-child"> 71 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/putting-dependency-injection-on-the-map/a-comprehensive-example/expanding-the-sample-application" class="bgg">2.3. Расширение шаблонного приложения</a></span> 72 - </li> 73 - <li class=" no-child"> 74 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/putting-dependency-injection-on-the-map/a-comprehensive-example/summary" class="bgg">2.4. Резюме</a></span> 75 - </li> 76 - 77 - </ul> 78 - </li> 79 - <li class=" "> 80 - <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/putting-dependency-injection-on-the-map/di-containers" class="bgg">3. DI-контейнеры</a></span> 81 - <ul> 82 - 83 - 84 - <li class=" no-child"> 85 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/putting-dependency-injection-on-the-map/di-containers/introducing-di-containers" class="bgg">3.1. Знакомство с DI-контейнерами</a></span> 86 - </li> 87 - <li class=" no-child"> 88 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/putting-dependency-injection-on-the-map/di-containers/configuring-di-containers" class="bgg">3.2. Конфигурирование DI-контейнеров</a></span> 89 - </li> 90 - <li class=" no-child"> 91 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/putting-dependency-injection-on-the-map/di-containers/di-container-patterns" class="bgg">3.3. Паттерны DI-контейнеров</a></span> 92 - </li> 93 - <li class=" no-child"> 94 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/putting-dependency-injection-on-the-map/di-containers/di-container-landscape" class="bgg">3.4. Перспектива DI-контейнеров</a></span> 95 - </li> 96 - <li class=" no-child"> 97 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/putting-dependency-injection-on-the-map/di-containers/summary" class="bgg">3.5. Резюме</a></span> 98 - </li> 99 - 100 - </ul> 101 - </li> 102 - 103 - </ul> 104 - </li> 105 - <li class=" "> 106 - <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/di-catalog" class="bgg">Каталог DI</a></span> 107 - <ul> 108 - 109 - 110 - <li class=" "> 111 - <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-patterns" class="bgg">4. DI паттерны</a></span> 112 - <ul> 113 - 114 - 115 - <li class=" no-child"> 116 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-patterns/constructor-injection" class="bgg">4.1. Внедрение в конструктор (Constructor Injection)</a></span> 117 - </li> 118 - <li class=" no-child"> 119 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-patterns/property-injection" class="bgg">4.2. Внедрение в свойство (Property Injection)</a></span> 120 - </li> 121 - <li class=" no-child"> 122 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-patterns/method-injection" class="bgg">4.3. Внедрение в метод (Method Injection)</a></span> 123 - </li> 124 - <li class=" no-child"> 125 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-patterns/ambient-context" class="bgg">4.4. Окружающий контекст (Ambient Context)</a></span> 126 - </li> 127 - <li class=" no-child"> 128 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-patterns/summary" class="bgg">4.5. Резюме</a></span> 129 - </li> 130 - 131 - </ul> 132 - </li> 133 - <li class=" "> 134 - <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-anti-patterns" class="bgg">5. DI анти-паттерны</a></span> 135 - <ul> 136 - 137 - 138 - <li class=" no-child"> 139 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-anti-patterns/control-freak" class="bgg">5.1. Control Freak</a></span> 140 - </li> 141 - <li class=" no-child"> 142 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-anti-patterns/bastard-injection" class="bgg">5.2. Bastard Injection</a></span> 143 - </li> 144 - <li class=" no-child"> 145 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-anti-patterns/constrained-construction" class="bgg">5.3. Constrained Construction</a></span> 146 - </li> 147 - <li class=" no-child"> 148 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-anti-patterns/service-locator" class="bgg">5.4. Service Locator</a></span> 149 - </li> 150 - <li class=" no-child"> 151 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-anti-patterns/summary" class="bgg">5.5. Резюме</a></span> 152 - </li> 153 - 154 - </ul> 155 - </li> 156 - <li class=" "> 157 - <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-refactorings" class="bgg">6. DI рефакторинг</a></span> 158 - <ul> 159 - 160 - 161 - <li class=" no-child"> 162 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-refactorings/mapping-runtime-values-to-abstractions" class="bgg">6.1. Преобразование динамических значений в абстракции</a></span> 163 - </li> 164 - <li class=" no-child"> 165 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-refactorings/working-with-short-lived-dependencies" class="bgg">6.2. Работа с недолговечными зависимостями</a></span> 166 - </li> 167 - <li class=" no-child"> 168 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-refactorings/resolving-cyclic-dependencies" class="bgg">6.3. Разрешение циклических зависимостей</a></span> 169 - </li> 170 - <li class=" no-child"> 171 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-refactorings/dealing-with-constructor-over-injection" class="bgg">6.4. Обсуждение феномена Constructor Over-injection</a></span> 172 - </li> 173 - <li class=" no-child"> 174 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-refactorings/monitoring-coupling" class="bgg">6.5. Мониторинг связывания</a></span> 175 - </li> 176 - <li class=" no-child"> 177 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-refactorings/summary" class="bgg">6.6. Резюме</a></span> 178 - </li> 179 - 180 - </ul> 181 - </li> 182 - 183 - </ul> 184 - </li> 185 - <li class=" "> 186 - <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/diy-di" class="bgg">DI самостоятельно</a></span> 187 - <ul> 188 - 189 - 190 - <li class=" "> 191 - <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/diy-di/object-composition" class="bgg">7. Построение объектов</a></span> 192 - <ul> 193 - 194 - 195 - <li class=" no-child"> 196 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/object-composition/composing-console-applications" class="bgg">7.1. Построение консольных приложений</a></span> 197 - </li> 198 - <li class=" no-child"> 199 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/object-composition/composing-asp-net-mvc-applications" class="bgg">7.2. Построение ASP.NET MVC приложений</a></span> 200 - </li> 201 - <li class=" no-child"> 202 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/object-composition/composing-wcf-applications" class="bgg">7.3. Построение WCF приложений</a></span> 203 - </li> 204 - <li class=" no-child"> 205 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/object-composition/composing-wpf-applications" class="bgg">7.4. Построение WPF приложений</a></span> 206 - </li> 207 - <li class=" no-child"> 208 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/object-composition/composing-asp-net-applications" class="bgg">7.5. Построение ASP.NET приложений</a></span> 209 - </li> 210 - <li class=" no-child"> 211 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/object-composition/composing-powershell-cmdlets" class="bgg">7.6. Построение PowerShell cmdlets</a></span> 212 - </li> 213 - <li class=" no-child"> 214 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/object-composition/summary" class="bgg">7.7. Резюме</a></span> 215 - </li> 216 - 217 - </ul> 218 - </li> 219 - <li class=" "> 220 - <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/diy-di/object-lifetime" class="bgg">8. Жизненный цикл объектов</a></span> 221 - <ul> 222 - 223 - 224 - <li class=" no-child"> 225 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/object-lifetime/managing-dependency-lifetime" class="bgg">8.1. Управление жизненным циклом зависимостей</a></span> 226 - </li> 227 - <li class=" no-child"> 228 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/object-lifetime/working-with-disposable-dependencies" class="bgg">8.2. Работа с устраняемыми зависимостями</a></span> 229 - </li> 230 - <li class=" no-child"> 231 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/object-lifetime/lifestyle-catalog" class="bgg">8.3. Каталог стилей существования объектов</a></span> 232 - </li> 233 - <li class=" no-child"> 234 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/object-lifetime/summary" class="bgg">8.4. Резюме</a></span> 235 - </li> 236 - 237 - </ul> 238 - </li> 239 - <li class=" "> 240 - <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/diy-di/interception" class="bgg">9. Механизм перехвата</a></span> 241 - <ul> 242 - 243 - 244 - <li class=" no-child"> 245 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/interception/introducing-interception" class="bgg">9.1. Знакомство с механизмом перехвата</a></span> 246 - </li> 247 - <li class=" no-child"> 248 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/interception/implementing-cross-cutting-concerns" class="bgg">9.2. Реализация сквозных сущностей</a></span> 249 - </li> 250 - <li class=" no-child"> 251 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/interception/declaring-aspects" class="bgg">9.3. Объявление аспектов</a></span> 252 - </li> 253 - <li class=" no-child"> 254 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/interception/summary" class="bgg">9.4. Резюме</a></span> 255 - </li> 256 - 257 - </ul> 258 - </li> 259 - 260 - </ul> 261 - </li> 262 - <li class=" "> 263 - <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/di-containers" class="bgg">DI-контейнеры</a></span> 264 - <ul> 265 - 266 - 267 - <li class=" "> 268 - <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/di-containers/castle-windsor" class="bgg">10. Castle Windsor</a></span> 269 - <ul> 270 - 271 - 272 - <li class=" no-child"> 273 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/castle-windsor/introducing-castle-windsor" class="bgg">10.1. Знакомство с Castle Windsor</a></span> 274 - </li> 275 - <li class=" no-child"> 276 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/castle-windsor/managing-lifetime" class="bgg">10.2. Управление жизненным циклом</a></span> 277 - </li> 278 - <li class="current no-child"> 279 - <span class="bold"><a href="https://smarly.net/dependency-injection-in-net/di-containers/castle-windsor/working-with-multiple-components" class="bgg">10.3. Работа с составными компонентами</a></span> 280 - </li> 281 - <li class=" no-child"> 282 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/castle-windsor/configuring-difficult-apis" class="bgg">10.4. Конфигурирование сложных API</a></span> 283 - </li> 284 - <li class=" no-child"> 285 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/castle-windsor/summary" class="bgg">10.5. Резюме</a></span> 286 - </li> 287 - 288 - </ul> 289 - </li> 290 - <li class=" "> 291 - <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/di-containers/structuremap" class="bgg">11. StructureMap</a></span> 292 - <ul> 293 - 294 - 295 - <li class=" no-child"> 296 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/structuremap/introducing-structuremap" class="bgg">11.1. Знакомство с StructureMap</a></span> 297 - </li> 298 - <li class=" no-child"> 299 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/structuremap/managing-lifetime" class="bgg">11.2. Управление жизненным циклом</a></span> 300 - </li> 301 - <li class=" no-child"> 302 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/structuremap/working-with-multiple-components" class="bgg">11.3. Работа с составными компонентами</a></span> 303 - </li> 304 - <li class=" no-child"> 305 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/structuremap/configuring-difficult-apis" class="bgg">11.4. Конфигурирование сложных API</a></span> 306 - </li> 307 - <li class=" no-child"> 308 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/structuremap/summary" class="bgg">11.5. Резюме</a></span> 309 - </li> 310 - 311 - </ul> 312 - </li> 313 - <li class=" "> 314 - <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/di-containers/spring-net" class="bgg">12. Spring.NET</a></span> 315 - <ul> 316 - 317 - 318 - <li class=" no-child"> 319 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/spring-net/introducing-spring-net" class="bgg">12.1. Знакомство с Spring.NET</a></span> 320 - </li> 321 - <li class=" no-child"> 322 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/spring-net/managing-lifetime" class="bgg">12.2. Управление жизненным циклом</a></span> 323 - </li> 324 - <li class=" no-child"> 325 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/spring-net/working-with-multiple-components" class="bgg">12.3. Работа с составными компонентами</a></span> 326 - </li> 327 - <li class=" no-child"> 328 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/spring-net/configuring-difficult-apis" class="bgg">12.4. Конфигурирование сложных API</a></span> 329 - </li> 330 - <li class=" no-child"> 331 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/spring-net/summary" class="bgg">12.5. Резюме</a></span> 332 - </li> 333 - 334 - </ul> 335 - </li> 336 - <li class=" "> 337 - <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/di-containers/autofac" class="bgg">13. Autofac</a></span> 338 - <ul> 339 - 340 - 341 - <li class=" no-child"> 342 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/autofac/introducing-autofac" class="bgg">13.1. Знакомство с Autofac</a></span> 343 - </li> 344 - <li class=" no-child"> 345 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/autofac/managing-lifetime" class="bgg">13.2. Управление жизненным циклом</a></span> 346 - </li> 347 - <li class=" no-child"> 348 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/autofac/working-with-multiple-components" class="bgg">13.3. Работа с составными компонентами</a></span> 349 - </li> 350 - <li class=" no-child"> 351 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/autofac/registering-difficult-apis" class="bgg">13.4. Регистрация сложных API</a></span> 352 - </li> 353 - <li class=" no-child"> 354 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/autofac/summary" class="bgg">13.5. Резюме</a></span> 355 - </li> 356 - 357 - </ul> 358 - </li> 359 - <li class=" "> 360 - <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/di-containers/unity" class="bgg">14. Unity</a></span> 361 - <ul> 362 - 363 - 364 - <li class=" no-child"> 365 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/unity/introducing-unity" class="bgg">14.1. Знакомство с Unity</a></span> 366 - </li> 367 - <li class=" no-child"> 368 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/unity/managing-lifetime" class="bgg">14.2. Управление жизненным циклом</a></span> 369 - </li> 370 - <li class=" no-child"> 371 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/unity/working-with-multiple-components" class="bgg">14.3. Работа с составными компонентами</a></span> 372 - </li> 373 - <li class=" no-child"> 374 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/unity/configuring-difficult-apis" class="bgg">14.4. Конфигурирование сложных API</a></span> 375 - </li> 376 - <li class=" no-child"> 377 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/unity/summary" class="bgg">14.5. Резюме</a></span> 378 - </li> 379 - 380 - </ul> 381 - </li> 382 - <li class=" "> 383 - <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/di-containers/mef" class="bgg">15. MEF</a></span> 384 - <ul> 385 - 386 - 387 - <li class=" no-child"> 388 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/mef/introducing-mef" class="bgg">15.1. Знакомство с MEF</a></span> 389 - </li> 390 - <li class=" no-child"> 391 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/mef/managing-lifetime" class="bgg">15.2. Управление жизненным циклом</a></span> 392 - </li> 393 - <li class=" no-child"> 394 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/mef/working-with-multiple-components" class="bgg">15.3. Работа с составными компонентами</a></span> 395 - </li> 396 - <li class=" no-child"> 397 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/mef/composing-difficult-apis" class="bgg">15.4. Конфигурирование сложных API</a></span> 398 - </li> 399 - <li class=" no-child"> 400 - <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/mef/summary" class="bgg">15.5. Резюме</a></span> 401 - </li> 402 - 403 - </ul> 404 - </li> 405 - 406 - </ul> 407 - </li> 408 - 409 - </ul> 410 -{{/html}} 9 +Преобразование абстракций в конкретные типы (Процесс разрешения)