在使用Ninject開發WPF應用程序時,我分析了一些集合只能在代碼中存在一次。將集合綁定到Ninject
例如,主窗口包含項目選項卡的內部列表,類似於瀏覽器中的選項卡。主窗口的視圖模型包含這個屬性ObservableCollection<ProjectViewModel>
...我的想法是,嘿,ProjectViewModel只有一個,只有一個ObservableCollection。如果我將這種類型與Ninject綁定爲單例,會發生什麼?
所以我寫了這樣的事情......
if (ViewModelBase.IsInDesignModeStatic) //pure WPF design mode check looks
//differently (this is MVVM Light)
{
kernel.Bind<ObservableCollection<Project>>().ToMethod((c) =>
{
return new ObservableCollection<Project>() { new Project("Lorem", "Ipsum") };
}
}
else
{
kernel.Bind<ObservableCollection<Project>>()
//.ToSelf() <-- ToSelf() does not work
.ToMethod((c) =>
{
return new ObservableCollection<Project>();
}).InSingletonScope();
}
和它的作品!在設計模式中,我實際上看到「Lorem」和「Ipsum」,並且在運行時,代碼似乎按預期工作,主視圖模型中的集合爲空。代碼看起來很不錯並且可讀。
但是,我懷疑和懷疑,我覺得我做的事情真的很髒和壞,因爲我找不到任何類似的代碼的例子,類的集合類型綁定到某個實現。但我可能沒有找到足夠的。
在Ninject中綁定了一些類的好主意的集合?這可能會導致任何意外的問題?
'IsInDesignModeStatic'呵呵? *靜態?*您不是真的將單詞「靜態」放在靜態方法名稱中,以表明它是靜態的,是嗎? – Will
這是MVVM Light屬性 – Mirek
Eeew。我的意思是,嚴肅地說, – Will