簡體   English   中英

具有必需類和多個可選類的Viewmodel

[英]Viewmodel with required class and multiple optional classes

我正在創建的視圖模型存在一個必需的類,並且取決於要加載的頁面,將實例化另一個類或另一個視圖模型。 該視圖模型的實現如何?

public class ViewModel
{
    public ViewModel() 
    {
        foo = new Foo();
    }
    public Foo foo { get; set; }
    public Bar1 bar1 { get; set; }
    public Bar2 bar2 { get; set; }
    public Bar3 bar3 { get; set; }
    public OtherViewmodel otherVM { get; set; }
}

基於上面的示例:剃刀引擎渲染的每個視圖都需要實現“ Foo”類。

第一頁需要使用“ Bar1”類。 控制器中的代碼如下所示:ViewModel.Bar1 = new Bar1();

第二頁將需要'OtherViewmodel'類,並將在OtherViewmodel的控制器中創建一個實例。

我不知道這是否是面向對象編程的正確方法。 當視圖模型不需要某個對象並且它是該類的屬性(但未實例化)時,對象的大小呢?

例如,類“ ViewModel”將用於我的所有頁面,因此我的所有類都是該類的一個屬性。 我認為有一種更干凈的編程方式,但是我還沒有找到。

任何幫助,將不勝感激。 提前致謝。

如何使用基類?

public abstract class BaseViewModel
{
    protected BaseViewModel()
    {
        foo = new Foo();
    }

    public Foo foo { get; set; }
}

您可以從僅包含一個條的該類派生類:

public class Bar1ViewModel: BaseViewModel
{
    public Bar1 bar1 { get; set; }
}

對我來說,這似乎是一種更清潔的方法。 您還可以在派生類的構造函數中實例化Bar1類,這樣就不必在控制器中執行此操作:

public Bar1ViewModel()
{
    bar1 = new Bar1();
}

暫無
暫無

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

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