Mugen Injection [ Начало работы]
Для начала работы с MugenInjection вам необходимо:
- Загрузить последнюю версию MugenInjection с сайта или из Nuget.
- Добавить ссылку на библиотеку MugenInjection.Core.dll в ваш проект.
- При запуске приложения...
- Создать экземпляр класса MugenInjector.
- Зарегистрировать компоненты.
- Во время выполнения приложения...
- Использовать MugenInjector для внедрения зависимостей.
Добавление ссылки на MugenInjection
Первый шаг это добавить ссылку на MugenInjection в ваш проект. Для нашего примера мы будем использовать только MugenInjection.Core.dll. Другие типы приложений могут использовать дополнительные библиотеки для интеграции.Самый простой способ сделать это использовать Nuget, пакет "MugenInjection" содержит все, что нам нужно для примера.
Запуск приложения
Например у нас есть такой код:public interface IWriter { void Write(string content); } public interface IService { void Process(); } public class ConsoleWriter : IWriter { #region Implementation of IWriter public void Write(string content) { Console.WriteLine(content); } #endregion } public class WriteSomethingService : IService { private readonly IWriter _writer; #region Constructors /// <summary> /// Initializes a new instance of the <see cref="WriteSomethingService"/> class. /// </summary> public WriteSomethingService(IWriter writer) { _writer = writer; } #endregion #region Implementation of IService public void Process() { _writer.Write("Hello MugenInjection."); } #endregion }
// Create your MugenInjector. var injector = new MugenInjector(); //Registering dependency injector.Bind<IWriter>().To<ConsoleWriter>(); injector.Bind<IService>().To<WriteSomethingService>();
Во время выполнения приложения
Во время выполнения приложения мы можем использовать компоненты, которые мы зарегистрировали в MugenInjector. Для нашего простого примера, мы реализуем метод "Process", так чтобы он получал компонент с типом IService и вызывал метод Process.class Program { private static IInjector _injector; static void Main(string[] args) { // Create your MugenInjector. _injector = new MugenInjector(); //Registering dependency _injector.Bind<IWriter>().To<ConsoleWriter>(); _injector.Bind<IService>().To<WriteSomethingService>(); Process(); } private static void Process() { var service = _injector.Get<IService>(); service.Process(); } }
- Метод "Process" запрашивает у IInjector компонент IService.
- IInjector видит, что IService соответствует класс WriteSomethingService, поэтому он начинает создавать его.
- IInjector видит, что класс WriteSomethingService в конструкторе принимает параметр типа IWriter.
- IInjector видит, что IWriter соответствует класс ConsoleWriter, поэтому он начинает создавать его.
- IInjector использует созданный ConsoleWriter для создания WriteSomethingService
- IInjector возвращает созданный WriteSomethingService для метода "Process".
Да это и называется внедрением зависимостей!:)