Resharper и IoC контейнеры: теперь знакомы! или плагин Agent Mulder

в 16:09, , рубрики: .net, ioc контейнеры, ReSharper, метки: , , ,

Доброго времени,

Как известно, Resharper решает много проблем по работе с кодом, но все-таки не все.

Одной из такой, не очень решенной, проблемой является навигация по зарегистрированным в IoC контайнерах классам.

Рассмотрим простой пример (используется IoC контейнер Unity от Microsoft).

    IUnityContainer container = new UnityContainer();
    container.RegisterType<IMovieRepository, InMemoryMovieRepository>();
    container.RegisterType<IMovieFinder, MovieFinder>();

В этом примере Resharper «не знает» где используется конструктор MovieFinder и выдает сообщение (по команде Find Usages) «Usages of 'MovieFinder(...)' was not found».

    public class MovieFinder: IMovieFinder
    {
        readonly IMovieRepository repository;

        public MovieFinder(IMovieRepository repository)
        {
            this.repository = repository;
        }
        ...
     }


Resharper и IoC контейнеры: теперь знакомы! или плагин Agent Mulder

Еще хуже обстоит дело, если в регистрации не используется имя класса. В этом случае класс будет показан Resharper-ом как не используемый.

Но, для того чтобы «познакомить» Resharper и IoC контайнеры нашлось решение.
Видимо пользуюясь известной фразой "пусть все будет, но чего то не хватает", разработчики Resharper-а добавили возможность написания плагинов.
Этим то и воспользовался Igal Tabachnik.

Плагин Agent Mulder анализирует контейнеры и обеспечивает удобную навигацию между классами и их регистрацией.

Итак, плагин обеспечивает 3 главные возможности:

1. Помечает классы, зарегистрированные в контейнере, специальной иконкой:
image

2. Обеспечивают навигацию от определения класса к месту регистрации.

3. И обратно, навигацию от регистрации до определения классов.
image

Работает все быстро и точно, но, к сожалению, иногда (VS2010 + Reshaper 6.1) навигация работает не так идеально, как хотелось бы. Надеюсь эти недостатки будут быстро устранены, потому что вещь полезная в хозяйстве.

Все что вокруг самого плагина (сайт, документация, инсталляция) сделаны хорошо и работают без проблем.

Сайт плагина: http://hmemcpy.github.com/AgentMulder/ содержит простое, но ясное описание. Имеется видео, которое объясняет еще проще.

Плагин уже попал на сайт Resharper-а. Я там насчитал 17 плагинов, из них 4 агента.

Список поддерживаемых контейнеров может быть найден тут https://raw.github.com/hmemcpy/AgentMulder/master/WhatsNew.txt.
Кстати, по хорошему надо написать систему плагинов для этого плагина, что бы добавлять свои IoC контейнеры :).

Детальное видео "Дмитрий Нестерук. ReSharper: Архитектура и Расширения" от mezastel может послужить введением в мир плагинов от решарпера.

Игорь.

Автор: constructor

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js