簡體   English   中英

將收藏集綁定到Ninject

[英]Bind a collection to Ninject

當我使用Ninject開發WPF應用程序時,我分析了一些集合,它們在代碼中應該只存在一次。

例如,主窗口由項目選項卡的內部列表組成,類似於瀏覽器中的選項卡。 主窗口的視圖模型包含此屬性ObservableCollection<ProjectViewModel> ...,我的想法是,嘿,只有一個ViewProject的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中綁定一些類的集合是個好主意嗎? 會導致任何意外的問題嗎?

我真的不覺得那太臟了。 這些全都保存在引導程序中,因此很容易去那里查看一下行為是什么。 您將所有控件狀態都推到了地毯下,以確保代碼其他部分的內容保持整潔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM