About .NET, ASP.NET, MVC, C#, WPF, WCF and everything related to .NET and more.

Mugen Injection [ Начало работы]

Для начала работы с MugenInjection вам необходимо:

  • Загрузить последнюю версию MugenInjection с сайта или из Nuget.
  • Добавить ссылку на библиотеку MugenInjection.Core.dll в ваш проект.
  • При запуске приложения...
    • Создать экземпляр класса MugenInjector.
    • Зарегистрировать компоненты.
  • Во время выполнения приложения...
    • Использовать MugenInjector для внедрения зависимостей.
В этом руководстве мы пройдем все шаги по созданию консольного приложения с использованием MugenInjection.

Добавление ссылки на 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
}
Используя MugenInjector мы можем зарегистрировать компоненты:
// 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".
Далее, вы легко можете создать новую реализацию интерфейса IWriter, и при этом вам не нужно будет ничего менять. Для того чтобы ее использовать, вы просто заменяете текущую реализацию на свою.
Да это и называется внедрением зависимостей!:)

Комментарии
Оставить комментарий
*bold*
_italics_
+underline+
* Bullet List
** Bullet List 2
# Number List
## Number List 2
{"Do not apply formatting"}
{code:language} code here {code:language}.
Supports: aspx c#, c#, c++, html, sql, xml
[url:http://www.example.com]