我目前正在使用新的VSX MEF扩展框架编写编辑边距。我没有找到VSPackage-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。
答案 0 :(得分:0)
您可以将[Export]
属性放在包类(MyPackage)上,然后使用[Import]将其导入MEF组件中:
[Export]
public class MyPackage : Package
{
}
[Export]
public class EditorExtension
{
[Import]
private MyPackage package = null;
}
当属性更改或调用OnApply时,您还可以在程序包上拥有事件。