Мне было интересно, есть ли лучшие практики по использованию Castle Windsor с надстройкой Visual Studio 2010, которая использует MEF для создания своих элементов управления, таких как IWpfTextView
.
Все зависимости регистрируются при создании VsPackage. Как я могу позже разрешить эти зависимости, когда IWpfTextViewCreationListener
создается через MEF, когда-нибудь позже? Стоит ли выставлять контейнер как синглтон и получать к нему доступ, или есть лучший способ?
Редактировать Вот что я пытаюсь сделать. Когда VsPackage создан, Виндзор связывает все зависимости, что, конечно, прекрасно.
Мой плагин является расширяемым типом редактора, поэтому после загрузки решения и открытия файла кода я получаю обратный вызов в мой класс, который наследует IWpfTextViewCreationListener
(и экспортируется с [Export(typeof(IWpfTextViewCreationListener))]
через MEF ( это делается автоматически в Visual Studio)
Это происходит в другом контексте, то есть у меня нет доступа к VsPackage из этого класса, и любые необходимые мне зависимости не будут инициализированы. Так что на данный момент я не уверен, как я могу получить те зависимости, которые были подключены ранее Виндзор.
Надеюсь, это прояснит ситуацию.
(Вы можете попробовать создать свой собственный проект extensibilty, используя Файл | Новый проект | Visual C # | Расширяемость | Украшение текстового редактора , например, чтобы увидеть, как (и когда) создается TextAdornment1Factory
.