- PVSM.RU - https://www.pvsm.ru -
Доброго времени,
Как известно, Resharper [1] решает много проблем по работе с кодом, но все-таки не все.
Одной из такой, не очень решенной, проблемой является навигация по зарегистрированным в IoC контайнерах классам.
Рассмотрим простой пример (используется IoC контейнер Unity [2] от 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-ом как не используемый.
Но, для того чтобы «познакомить» Resharper и IoC контайнеры нашлось решение.
Видимо пользуюясь известной фразой "пусть все будет, но чего то не хватает [3]", разработчики Resharper-а добавили возможность написания плагинов.
Этим то и воспользовался Igal Tabachnik [4].
Плагин Agent Mulder [5] анализирует контейнеры и обеспечивает удобную навигацию между классами и их регистрацией.
Итак, плагин обеспечивает 3 главные возможности:
1. Помечает классы, зарегистрированные в контейнере, специальной иконкой:

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

Работает все быстро и точно, но, к сожалению, иногда (VS2010 + Reshaper 6.1) навигация работает не так идеально, как хотелось бы. Надеюсь эти недостатки будут быстро устранены, потому что вещь полезная в хозяйстве.
Все что вокруг самого плагина (сайт, документация, инсталляция) сделаны хорошо и работают без проблем.
Сайт плагина: http://hmemcpy.github.com/AgentMulder/ [5] содержит простое, но ясное описание. Имеется видео [6], которое объясняет еще проще.
Плагин уже попал на сайт Resharper [7]-а. Я там насчитал 17 плагинов, из них 4 агента.
Список поддерживаемых контейнеров может быть найден тут https://raw.github.com/hmemcpy/AgentMulder/master/WhatsNew.txt [8].
Кстати, по хорошему надо написать систему плагинов для этого плагина, что бы добавлять свои IoC контейнеры :).
Детальное видео "Дмитрий Нестерук. ReSharper: Архитектура и Расширения [9]" от mezastel [10] может послужить введением в мир плагинов от решарпера.
Игорь.
Автор: constructor
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/net/9706
Ссылки в тексте:
[1] Resharper: http://www.jetbrains.com/resharper/
[2] Unity: http://unity.codeplex.com/
[3] пусть все будет, но чего то не хватает: http://www.youtube.com/watch?v=3zDtR6oM3eQ
[4] Igal Tabachnik: https://github.com/hmemcpy
[5] Плагин Agent Mulder: http://hmemcpy.github.com/AgentMulder/
[6] видео: http://vimeo.com/41113265
[7] сайт Resharper: http://www.jetbrains.com/resharper/plugins/index.jsp#Agent_Mulder
[8] https://raw.github.com/hmemcpy/AgentMulder/master/WhatsNew.txt: https://raw.github.com/hmemcpy/AgentMulder/master/WhatsNew.txt
[9] Дмитрий Нестерук. ReSharper: Архитектура и Расширения: http://vimeo.com/19273009
[10] mezastel: http://habrahabr.ru/users/mezastel/
Нажмите здесь для печати.