gpt4 book ai didi

c# - 具有必需类和多个可选类的 View 模型

转载 作者:行者123 更新时间:2023-11-30 22:12:33 25 4
gpt4 key购买 nike

我正在创建的 View 模型存在一个必需的类,并且根据要加载的页面,实例化了另一个类或可能是另一个 View 模型。这个 View 模型的实现看起来如何?

例子

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; }
}

基于上面的示例:razor 引擎呈现的每个 View 都需要类“Foo”的实现。

第一页需要“Bar1”类。 Controller 中的代码如下所示:ViewModel.Bar1 = new Bar1();

第二个页面将需要“OtherViewmodel”类,并将在 OtherViewmodel 的 Controller 中创建一个实例。

我不知道这是否是面向对象编程的正确方法。当 View 模型不需要某个对象并且它是类的属性(但未实例化)时,对象的大小如何?

例如,“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 类,这样您就不必在 Controller 中执行此操作:

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

关于c# - 具有必需类和多个可选类的 View 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19635439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com