1

我想知道是否有关于将 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创建。

4

0 回答 0