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

Скрыть последних авторов
Alexandr Fokin 9.2 1 | |В данной книге рассматриваются концепции DI и IOC. А также приводятся примеры взаимодействия с framework IOC контейнерами.
2 Приводятся примеры паттернов и анти-паттернов.
Alexandr Fokin 3.1 3 Управление жизненным циклом зависимостей.
Alexandr Fokin 9.2 4 | |(((
5 |(% style="width:363px" %)Преобразование абстракций в конкретные типы
6 (Процесс разрешения)|(% style="width:1087px" %)(((
7 [[image:DI IOC.jpg]]
Alexandr Fokin 5.1 8
Alexandr Fokin 9.2 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 )))
Alexandr Fokin 9.5 22 | |[[DI IOC AOP>>doc:Разработка.NET.Библиотеки.DI IOC AOP.WebHome]]
Alexandr Fokin 9.3 23
24 ----
25
Alexandr Fokin 9.4 26 {{html}}
27 <ul>
Alexandr Fokin 9.2 28
Alexandr Fokin 5.1 29
Alexandr Fokin 9.2 30 <li class=" ">
31 <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/putting-dependency-injection-on-the-map" class="bgg">Появление механизма внедрения зависимостей</a></span>
32 <ul style="display: block;">
33
Alexandr Fokin 8.1 34
Alexandr Fokin 9.2 35 <li class=" ">
36 <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>
37 <ul style="display: block;">
38
Alexandr Fokin 8.1 39
Alexandr Fokin 9.2 40 <li class=" no-child">
41 <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>
42 </li>
43 <li class=" no-child">
44 <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>
45 </li>
46 <li class=" no-child">
47 <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>
48 </li>
49 <li class=" no-child">
50 <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>
51 </li>
52 <li class=" no-child">
53 <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>
54 </li>
Alexandr Fokin 9.1 55
Alexandr Fokin 9.2 56 </ul>
57 </li>
58 <li class=" ">
59 <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>
60 <ul>
61
Alexandr Fokin 8.1 62
Alexandr Fokin 9.2 63 <li class=" no-child">
64 <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>
65 </li>
66 <li class=" no-child">
67 <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>
68 </li>
69 <li class=" no-child">
70 <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>
71 </li>
72 <li class=" no-child">
73 <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>
74 </li>
Alexandr Fokin 8.1 75
Alexandr Fokin 9.2 76 </ul>
77 </li>
78 <li class=" ">
79 <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>
80 <ul>
81
Alexandr Fokin 8.1 82
Alexandr Fokin 9.2 83 <li class=" no-child">
84 <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>
85 </li>
86 <li class=" no-child">
87 <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>
88 </li>
89 <li class=" no-child">
90 <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>
91 </li>
92 <li class=" no-child">
93 <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>
94 </li>
95 <li class=" no-child">
96 <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>
97 </li>
Alexandr Fokin 8.1 98
Alexandr Fokin 9.2 99 </ul>
100 </li>
Alexandr Fokin 8.1 101
Alexandr Fokin 9.2 102 </ul>
103 </li>
104 <li class=" ">
105 <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/di-catalog" class="bgg">Каталог DI</a></span>
106 <ul>
107
Alexandr Fokin 8.1 108
Alexandr Fokin 9.2 109 <li class=" ">
110 <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-patterns" class="bgg">4. DI паттерны</a></span>
111 <ul>
112
Alexandr Fokin 8.1 113
Alexandr Fokin 9.2 114 <li class=" no-child">
115 <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>
116 </li>
117 <li class=" no-child">
118 <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>
119 </li>
120 <li class=" no-child">
121 <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>
122 </li>
123 <li class=" no-child">
124 <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>
125 </li>
126 <li class=" no-child">
127 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-patterns/summary" class="bgg">4.5. Резюме</a></span>
128 </li>
Alexandr Fokin 8.1 129
Alexandr Fokin 9.2 130 </ul>
131 </li>
132 <li class=" ">
133 <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-anti-patterns" class="bgg">5. DI анти-паттерны</a></span>
134 <ul>
135
Alexandr Fokin 8.1 136
Alexandr Fokin 9.2 137 <li class=" no-child">
138 <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>
139 </li>
140 <li class=" no-child">
141 <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>
142 </li>
143 <li class=" no-child">
144 <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>
145 </li>
146 <li class=" no-child">
147 <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>
148 </li>
149 <li class=" no-child">
150 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-anti-patterns/summary" class="bgg">5.5. Резюме</a></span>
151 </li>
Alexandr Fokin 8.1 152
Alexandr Fokin 9.2 153 </ul>
154 </li>
155 <li class=" ">
156 <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-refactorings" class="bgg">6. DI рефакторинг</a></span>
157 <ul>
158
Alexandr Fokin 8.1 159
Alexandr Fokin 9.2 160 <li class=" no-child">
161 <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>
162 </li>
163 <li class=" no-child">
164 <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>
165 </li>
166 <li class=" no-child">
167 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-refactorings/resolving-cyclic-dependencies" class="bgg">6.3. Разрешение циклических зависимостей</a></span>
168 </li>
169 <li class=" no-child">
170 <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>
171 </li>
172 <li class=" no-child">
173 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-refactorings/monitoring-coupling" class="bgg">6.5. Мониторинг связывания</a></span>
174 </li>
175 <li class=" no-child">
176 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-catalog/di-refactorings/summary" class="bgg">6.6. Резюме</a></span>
177 </li>
Alexandr Fokin 8.1 178
Alexandr Fokin 9.2 179 </ul>
180 </li>
Alexandr Fokin 8.1 181
Alexandr Fokin 9.2 182 </ul>
183 </li>
184 <li class=" ">
185 <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/diy-di" class="bgg">DI самостоятельно</a></span>
186 <ul>
187
Alexandr Fokin 8.1 188
Alexandr Fokin 9.2 189 <li class=" ">
190 <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/diy-di/object-composition" class="bgg">7. Построение объектов</a></span>
191 <ul>
192
Alexandr Fokin 8.1 193
Alexandr Fokin 9.2 194 <li class=" no-child">
195 <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/object-composition/composing-console-applications" class="bgg">7.1. Построение консольных приложений</a></span>
196 </li>
197 <li class=" no-child">
198 <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>
199 </li>
200 <li class=" no-child">
201 <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>
202 </li>
203 <li class=" no-child">
204 <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>
205 </li>
206 <li class=" no-child">
207 <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>
208 </li>
209 <li class=" no-child">
210 <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>
211 </li>
212 <li class=" no-child">
213 <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/object-composition/summary" class="bgg">7.7. Резюме</a></span>
214 </li>
Alexandr Fokin 8.1 215
Alexandr Fokin 9.2 216 </ul>
217 </li>
218 <li class=" ">
219 <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/diy-di/object-lifetime" class="bgg">8. Жизненный цикл объектов</a></span>
220 <ul>
221
Alexandr Fokin 8.1 222
Alexandr Fokin 9.2 223 <li class=" no-child">
224 <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/object-lifetime/managing-dependency-lifetime" class="bgg">8.1. Управление жизненным циклом зависимостей</a></span>
225 </li>
226 <li class=" no-child">
227 <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>
228 </li>
229 <li class=" no-child">
230 <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/object-lifetime/lifestyle-catalog" class="bgg">8.3. Каталог стилей существования объектов</a></span>
231 </li>
232 <li class=" no-child">
233 <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/object-lifetime/summary" class="bgg">8.4. Резюме</a></span>
234 </li>
Alexandr Fokin 8.1 235
Alexandr Fokin 9.2 236 </ul>
237 </li>
238 <li class=" ">
239 <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/diy-di/interception" class="bgg">9. Механизм перехвата</a></span>
240 <ul>
241
Alexandr Fokin 8.1 242
Alexandr Fokin 9.2 243 <li class=" no-child">
244 <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/interception/introducing-interception" class="bgg">9.1. Знакомство с механизмом перехвата</a></span>
245 </li>
246 <li class=" no-child">
247 <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/interception/implementing-cross-cutting-concerns" class="bgg">9.2. Реализация сквозных сущностей</a></span>
248 </li>
249 <li class=" no-child">
250 <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/interception/declaring-aspects" class="bgg">9.3. Объявление аспектов</a></span>
251 </li>
252 <li class=" no-child">
253 <span class=""><a href="https://smarly.net/dependency-injection-in-net/diy-di/interception/summary" class="bgg">9.4. Резюме</a></span>
254 </li>
Alexandr Fokin 8.1 255
Alexandr Fokin 9.2 256 </ul>
257 </li>
Alexandr Fokin 8.1 258
Alexandr Fokin 9.2 259 </ul>
260 </li>
261 <li class=" ">
262 <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/di-containers" class="bgg">DI-контейнеры</a></span>
263 <ul>
264
Alexandr Fokin 8.1 265
Alexandr Fokin 9.2 266 <li class=" ">
267 <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/di-containers/castle-windsor" class="bgg">10. Castle Windsor</a></span>
268 <ul>
269
Alexandr Fokin 8.1 270
Alexandr Fokin 9.2 271 <li class=" no-child">
272 <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>
273 </li>
274 <li class=" no-child">
275 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/castle-windsor/managing-lifetime" class="bgg">10.2. Управление жизненным циклом</a></span>
276 </li>
277 <li class="current no-child">
278 <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>
279 </li>
280 <li class=" no-child">
281 <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>
282 </li>
283 <li class=" no-child">
284 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/castle-windsor/summary" class="bgg">10.5. Резюме</a></span>
285 </li>
Alexandr Fokin 8.1 286
Alexandr Fokin 9.2 287 </ul>
288 </li>
289 <li class=" ">
290 <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/di-containers/structuremap" class="bgg">11. StructureMap</a></span>
291 <ul>
292
Alexandr Fokin 8.1 293
Alexandr Fokin 9.2 294 <li class=" no-child">
295 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/structuremap/introducing-structuremap" class="bgg">11.1. Знакомство с StructureMap</a></span>
296 </li>
297 <li class=" no-child">
298 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/structuremap/managing-lifetime" class="bgg">11.2. Управление жизненным циклом</a></span>
299 </li>
300 <li class=" no-child">
301 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/structuremap/working-with-multiple-components" class="bgg">11.3. Работа с составными компонентами</a></span>
302 </li>
303 <li class=" no-child">
304 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/structuremap/configuring-difficult-apis" class="bgg">11.4. Конфигурирование сложных API</a></span>
305 </li>
306 <li class=" no-child">
307 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/structuremap/summary" class="bgg">11.5. Резюме</a></span>
308 </li>
Alexandr Fokin 8.1 309
Alexandr Fokin 9.2 310 </ul>
311 </li>
312 <li class=" ">
313 <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/di-containers/spring-net" class="bgg">12. Spring.NET</a></span>
314 <ul>
315
Alexandr Fokin 8.1 316
Alexandr Fokin 9.2 317 <li class=" no-child">
318 <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>
319 </li>
320 <li class=" no-child">
321 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/spring-net/managing-lifetime" class="bgg">12.2. Управление жизненным циклом</a></span>
322 </li>
323 <li class=" no-child">
324 <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>
325 </li>
326 <li class=" no-child">
327 <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>
328 </li>
329 <li class=" no-child">
330 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/spring-net/summary" class="bgg">12.5. Резюме</a></span>
331 </li>
Alexandr Fokin 8.1 332
Alexandr Fokin 9.2 333 </ul>
334 </li>
335 <li class=" ">
336 <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/di-containers/autofac" class="bgg">13. Autofac</a></span>
337 <ul>
338
Alexandr Fokin 8.1 339
Alexandr Fokin 9.2 340 <li class=" no-child">
341 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/autofac/introducing-autofac" class="bgg">13.1. Знакомство с Autofac</a></span>
342 </li>
343 <li class=" no-child">
344 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/autofac/managing-lifetime" class="bgg">13.2. Управление жизненным циклом</a></span>
345 </li>
346 <li class=" no-child">
347 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/autofac/working-with-multiple-components" class="bgg">13.3. Работа с составными компонентами</a></span>
348 </li>
349 <li class=" no-child">
350 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/autofac/registering-difficult-apis" class="bgg">13.4. Регистрация сложных API</a></span>
351 </li>
352 <li class=" no-child">
353 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/autofac/summary" class="bgg">13.5. Резюме</a></span>
354 </li>
Alexandr Fokin 8.1 355
Alexandr Fokin 9.2 356 </ul>
357 </li>
358 <li class=" ">
359 <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/di-containers/unity" class="bgg">14. Unity</a></span>
360 <ul>
361
Alexandr Fokin 8.1 362
Alexandr Fokin 9.2 363 <li class=" no-child">
364 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/unity/introducing-unity" class="bgg">14.1. Знакомство с Unity</a></span>
365 </li>
366 <li class=" no-child">
367 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/unity/managing-lifetime" class="bgg">14.2. Управление жизненным циклом</a></span>
368 </li>
369 <li class=" no-child">
370 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/unity/working-with-multiple-components" class="bgg">14.3. Работа с составными компонентами</a></span>
371 </li>
372 <li class=" no-child">
373 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/unity/configuring-difficult-apis" class="bgg">14.4. Конфигурирование сложных API</a></span>
374 </li>
375 <li class=" no-child">
376 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/unity/summary" class="bgg">14.5. Резюме</a></span>
377 </li>
Alexandr Fokin 8.1 378
Alexandr Fokin 9.2 379 </ul>
380 </li>
381 <li class=" ">
382 <span class="have-child "><a href="https://smarly.net/dependency-injection-in-net/di-containers/mef" class="bgg">15. MEF</a></span>
383 <ul>
384
Alexandr Fokin 8.1 385
Alexandr Fokin 9.2 386 <li class=" no-child">
387 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/mef/introducing-mef" class="bgg">15.1. Знакомство с MEF</a></span>
388 </li>
389 <li class=" no-child">
390 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/mef/managing-lifetime" class="bgg">15.2. Управление жизненным циклом</a></span>
391 </li>
392 <li class=" no-child">
393 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/mef/working-with-multiple-components" class="bgg">15.3. Работа с составными компонентами</a></span>
394 </li>
395 <li class=" no-child">
396 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/mef/composing-difficult-apis" class="bgg">15.4. Конфигурирование сложных API</a></span>
397 </li>
398 <li class=" no-child">
399 <span class=""><a href="https://smarly.net/dependency-injection-in-net/di-containers/mef/summary" class="bgg">15.5. Резюме</a></span>
400 </li>
Alexandr Fokin 8.1 401
Alexandr Fokin 9.2 402 </ul>
403 </li>
Alexandr Fokin 8.1 404
Alexandr Fokin 9.2 405 </ul>
406 </li>
Alexandr Fokin 8.1 407
Alexandr Fokin 9.4 408 </ul>
409 {{/html}}
Alexandr Fokin 9.6 410
411 ----
412
413 ==== Внутренние ссылки: ====
414
415 ====== Дочерние страницы: ======
416
417 {{children/}}
418
419 ====== Обратные ссылки: ======
420
421 {{velocity}}
422 #set ($links = $doc.getBacklinks())
423 #if ($links.size() > 0)
424 #foreach ($docname in $links)
425 #set ($rdoc = $xwiki.getDocument($docname).getTranslatedDocument())
426 * [[$escapetool.xml($rdoc.fullName)]]
427 #end
428 #else
429 No back links for this page!
430 #end
431 {{/velocity}}
432
433 ----