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組合類型。它將從編輯器擴展中導入,同一個實例將被該包共享。 –
謝謝。你知道我怎樣才能將你的評論標記爲有效答案嗎? –