C# 视图中未直接使用的类是否仍然是模型(MVVM)?

C# 视图中未直接使用的类是否仍然是模型(MVVM)?,c#,mvvm,C#,Mvvm,我向MVVM提出以下问题: 永远不会在视图中直接使用的类(只是模型的一部分)也是模型吗? 我必须这样做吗 例如: 我有一个具有address属性的用户模型 class UserModel { private Address _address; public Address Address { get => return _address; set => _address = value; } } 我必须创建一个Addr

我向MVVM提出以下问题:

永远不会在视图中直接使用的类(只是模型的一部分)也是模型吗? 我必须这样做吗

例如:

我有一个具有address属性的用户模型

class UserModel
{
    private Address _address;
    public Address Address
    {
        get => return _address;
        set => _address = value;
    }
}
我必须创建一个AddressModel和AddressViewModel,还是可以只使用一个带有数据和逻辑的Address类


解释会很有帮助,因为我想创建一个类图。:)

我认为最好的答案是你为什么在乎?如果一个类是从一个视图中使用的,那么这就对它提出了一些结构要求,比如实现
INotifyPropertyChanged
。如果您不是从一个视图使用这个类,那么您就没有这些要求。如果最终在视图中使用该类,您仍然可以实现
INotifyPropertyChanged
,但您不必这样做,特别是如果很明显该类提供的功能永远不会向视图公开,比如由于法律问题或类似问题,您不能显示用户的地址

然而,对我来说,这听起来不现实。最有可能的情况是,您希望至少显示用户地址,这使
地址成为一个视图模型。

“我必须这样做吗”-您不必做任何事情。这取决于你的设计。ViewModels可帮助您对并非真正属于模型的内容进行建模,但对视图有用(即元素的颜色或可见性,或某些属性的可读版本)。在这个狭隘的例子中,拥有viewmodel似乎没有多大用处——但是如果应用程序能够发展,那么现在最好包括一个viewmodel,这样以后需要时,您就已经拥有了viewmodel,不需要更改其他代码