Skip to content

Griboedoff/di

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

28 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Dependency Injection Container

Π‘Π°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π²ΠΈΠ΄Π΅ΠΎΠ»Π΅ΠΊΡ†ΠΈΡŽ DI-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ (~1.5 часов)

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с DI-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ

  1. Π Π°Π·ΠΌΠΈΠ½ΠΊΠ°. Π’ классС Program ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Main Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ MainForm создавался ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ. Π£Π΄Π°Π»ΠΈΡ‚Π΅ Ρƒ MainForm конструктор Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ сдСлайтС Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π» Π² MainForm список IUiAction.

  2. INeed. Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ KochFractalAction. Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ INeed ΠΈ DependencyInjector. ΠžΡ†Π΅Π½ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ зависимостями.

  3. Π Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ класс KochFractalAction Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ зависимости IImageHolder ΠΈ Pallette ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ явно Ρ‡Π΅Ρ€Π΅Π· конструктор, Π±Π΅Π· использования интСрфСйса INeed.

Подсказка. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² MainForm ΠΈ KochFractalAction оказались ссылки Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ PictureBoxImageHolder.

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ настройка ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹ для рисования ΠΊΡ€ΠΈΠ²ΠΎΠΉ ΠšΠΎΡ…Π° всё Π΅Ρ‰Ρ‘ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

  1. Π•Ρ‰Π΅ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³. Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ KochFractalAction ΠΈ ΠΏΠΎΠΉΠΌΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ IImageHolder ΠΈ Pallette Π΅ΠΌΡƒ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΅Π³ΠΎ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ KochPainter.

  2. Π€Π°Π±Ρ€ΠΈΠΊΠ°. Аналогично ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ INeed, ΠΈ явноС использованиС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈΠ· класса DragonFractalAction. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ β€” нСльзя ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ интСрфСйс DragonPainter. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· зависимостСй DragonPainter β€” DragonSettings оказываСтся извСстной Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ экшСна. Из-Π·Π° этого Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² конструктор ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ Painter. ВмСсто этого ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ„Π°Π±Ρ€ΠΈΠΊΡƒ DragonPainter-ΠΎΠ². https://github.com/ninject/Ninject.Extensions.Factory/wiki/Factory-interface

  3. Π€Π°Π±Ρ€ΠΈΠΊΠ° 2. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ DragonSettingsGenerator Ρ‚Π°ΠΊΠΆΠ΅ Π² Ρ„Π°Π±Ρ€ΠΈΠΊΡƒ ΠΈ ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ эту Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π² DragonFractalAction.

  4. Новая Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ. ΠŸΠ΅Ρ€Π΅Π²Π΅Π΄ΠΈΡ‚Π΅ DragonPainter Π½Π° использованиС Ρ†Π²Π΅Ρ‚ΠΎΠ² ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹, ΠΊΠ°ΠΊ это сдСлано Π² KochPainter.

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ экшСн настройки ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ. Если Π²Ρ‹ всё сдСлали ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρ‚ΠΎ для добавлСния зависимости Π²Π°ΠΌ Π½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅. Магия!

  1. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ зависимости. Аналогично ΠΎΡ‚Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΡ‚Π΅ ImageSettingsAction. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ класса IImageSettingsProvider.

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠΊΠ½ΠΎ настройки Ρ€Π°Π·ΠΌΠ΅Ρ€Π° изобраТСния Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ установлСнный Ρ€Π°Π·ΠΌΠ΅Ρ€.

  1. Π˜Π·Π±Π°Π²ΡŒΡ‚Π΅ΡΡŒ ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… использований INeed ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ этот интСрфСйс ΠΈ класс DependencyInjector ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

  2. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° многочислСнныС привязки ΠΊ IUiAction. Π’ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… количСство классов ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΡ‡ΠΈΡΠ»ΡΡ‚ΡŒΡΡ дСсятками ΠΈ сотнями. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ https://github.com/ninject/Ninject.Extensions.Conventions ΠΈ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ всС эти привязки ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² ΠΎΠ΄Π½Ρƒ строчку.

  3. ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ послС послСднСго Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ мСню ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ°Π»ΠΈΡΡŒ. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ?

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%