我一直在構建一個WPF應用程序。到目前爲止,大多數ViewModel嚴格禁止他們自己的代碼。 我最近決定創建一個基類「ApplicationViewModel
」將通用代碼遷移到其中。對於大多數情況下,這工作正常,但我遇到了我遇到困難的問題。如何確保只有一個View Model Base類的實例?
看來我的繼承視圖模型正在產生他們自己的這個基本視圖模型的實例。結果是;如果ClassA中的某個方法更改基類中的某個變量,那麼ClassB仍會將相同的變量註冊爲null,或者以前的任何值都是如此。
起初我以爲微軟的統一容器將解決這一問題註冊實例,
public App()
{
Container.RegisterType<ApplicationViewModel>(new ContainerControlledLifetimeManager());
}
但什麼也沒有改變。
我在研究後發現的明顯答案是將類變爲靜態的,但在我走向該路線之前,我更希望有另一種解決方案。我的程序功能太多可能需要重新加工。
我不確定是否單例實例屬性甚至可以使用基類聲明。
所以我想我的問題是:我將如何確保在所有ViewModel中使用此視圖模型基類的相同實例?
如果所有的ViewModels從這個基礎視圖模型繼承的話,單一實例共享是不可能的,它甚至沒有意義 –
這是另一個角度;單個基類實例的用例是什麼? –
發佈類結構的大綱。一個小小的C#比描述更清晰。你所描述的並不是那麼明顯。 –