Редактировал(а) Alexandr Fokin 2024/10/02 10:51

<
От версии < 9.4 >
отредактировано Alexandr Fokin
на 2024/01/04 19:24
К версии < 7.1 >
отредактировано Alexandr Fokin
на 2020/01/24 14:45
>
Изменить комментарий: К данной версии нет комментариев

Комментарий

Подробности

Свойства страницы
Содержимое
... ... @@ -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 +Преобразование абстракций в конкретные типы (Процесс разрешения)