2

機能の多くが MEF を介して記述されている Visual Studio 拡張機能があります。これまでのところ、私の個々の機能は perITextBufferであるため、Properties メンバーを使用してインスタンスをキャッシュしました。

ただし、現在、プロジェクトごとおよびソリューションごとに必要な機能がいくつかあります。EnvDTE クラスは Properties オブジェクトを提供しますが、それらが独自の任意のデータを格納できるかどうかはわかりませんでした。自分のデータを静的にしたくありません。

グローバル変数に頼らずに、プロジェクトごとおよびソリューションごとのデータを保存するにはどうすればよいですか?

編集:

また、シングルトンなどで非表示にしたとしても、静的データに MEF インポートを使用できないため、グローバル変数ルートを使用することは物理的に不可能です。ですから、グローバルではない何かが本当に、本当に必要です。

編集:

永続的な値ではなく、オブジェクト参照について話しているのです。ソリューションまたはプロジェクトファイルに何も保存する必要はありません。オブジェクトのみを使用します。

4

2 に答える 2

0

MEF が静的インポートを尊重するように説得する方法を見つけたので、今のところ、静的データを使用しています。

(Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(SComponentModel)) as IComponentModel).DefaultCompositionService.SatisfyImportsOnce(this);

それは別の場所に投稿されていました-おそらくSOでも-見つけるのに少し時間がかかりました. 必要なインターフェイスがないことに注意しthisてください-リフレクションが使用されるため、任意の this.

于 2013-10-04T19:05:34.137 に答える