我想知道是否有关于将 Castle Windsor 与 Visual Studio 2010 插件一起使用的最佳实践,该插件在内部使用 MEF 来实例化其控件,例如IWpfTextView
.
创建 VsPackage 时会注册所有依赖项。IWpfTextViewCreationListener
当通过 MEF 创建时,我以后如何解决这些依赖关系?我应该将容器公开为单例并访问它,还是有更好的方法?
编辑这就是我想要完成的。创建 VsPackage 时,Windsor 正在连接所有的依赖项,这当然是它的优点。
我的插件是“编辑器装饰”类型的可扩展性,因此在加载解决方案并打开代码文件后,我会收到一个回调到我的类继承IWpfTextViewCreationListener
(并[Export(typeof(IWpfTextViewCreationListener))]
通过 MEF 导出(由 Visual Studio 自动完成)。
这发生在另一种情况下,即我无法从此类访问 VsPackage,并且我需要的任何依赖项都不会被初始化。所以在这一点上,我不确定如何获得以前由 Windsor 连接的那些依赖项。
希望这能让它更清楚。
(例如,您可以尝试使用File | New Project | Visual C# | Extensibility | Text Editor Adornment创建自己的可扩展性项目,以查看如何(以及何时)TextAdornment1Factory
创建。