現在、新しい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がVisual Studioによって作成された既存のオブジェクトを使用する代わりに、MyPackageの新しいオブジェクトを作成していないことを確認してください。 –
実際はあなたが正しいかもしれません。この場合、パッケージ内でMEFコンポジションコンテナにアクセスし、ComponentModel.GetService <>()を手作業で呼び出して、共有MEF作成タイプにします。 Editor Extensionからインポートされ、同じインスタンスがパッケージで共有されます。 –
ありがとうございます。私はあなたのコメントを有効な回答としてマークすることができますか? –