0
我目前正在使用新的VSX MEF扩展框架编写编辑器边距。我没有找到VSPackage-OptionPage的对象,因此我使用旧的框架进行设置。VS2010扩展,OptionPage,读出值
现在我面临从MEF组件内读取设置值的问题。我无法从那里调用GetDialogPage()。有这样的代码是一个好主意:
public static MyPackage Instance;
public MyPackage() { Instance = this; } // Hopefully called only once?
public bool MyBoolOption { get { var opts = GetDialogPage(...) as ...; return opts.MyBoolOption; } }
我不确定这是否是“干净的”代码。
更有问题的是通知我的MEF组件有些变化。例如。 OnApply()通知MEF组件的操作“嘿,该更新了,因为XYZ已经改变了!”。
如何以干净的方式做到这一点?
此致敬礼, D.R.
您确定MEF未创建MyPackage的新对象,而不是使用Visual Studio创建的现有对象吗? –
其实你可能是对的。在这种情况下,在包中,您可以获取MEF组合容器并手动调用ComponentModel.GetService <>()以获得共享的MEF组合类型。它将从编辑器扩展中导入,同一个实例将被该包共享。 –
谢谢。你知道我怎样才能将你的评论标记为有效答案吗? –