gpt4 book ai didi

c# - 当你拥有 Rich Models 时你会做什么?

转载 作者:太空狗 更新时间:2023-10-30 01:09:09 25 4
gpt4 key购买 nike

我在一个项目中使用现有代码,该项目到处都有丰富的模型(而不是 POCO)。基本上,有没有什么好方法可以在不重复代码的情况下混合丰富的模型和 ViewModel?


  • 丰富的模型有数据验证。有什么简单的方法可以将它们与 ViewModel 一起重用?

例子:

public class PersonViewModel : INotifyPropertyChanged, IDataErrorInfo
{
private Person _person;

[Required] //This seems redundent...
public String FirstName { ... }
}

public class Person
{
[Required]
public String FirstName { ... }
}

这只是一个例子……基本上,如果您有一个 Rich Model,有什么方法可以在保持 MVVM 的同时利用它并避免冗余代码?我真的很想避免让我的模型成为任何数据上下文或完全由 ViewModel 公开。

例如:

public class PersonViewModel : INotifyPropertyChanged, IDataErrorInfo
{
private Person _person;

//This seems like a bad thing to do...
public Person ThePerson { get { return _person; } }
}

最佳答案

这是一个经典问题。

如果您使用特定于表示层的接口(interface)和属性“污染”您的模型类,您将通过仅拥有任何逻辑模型的一个版本来提高效率,但会失去表示和业务模型独立发展的能力。

如果您保持您的模型“纯”并维护一个单独的 View 模型,您可以在每个版本中获得灵 active ,但由于必须维护(和映射)两个版本而降低效率。

从理论的角度来看,对于更复杂的系统,我会推荐后者。如果您的系统相对简单(想想 CRUD)并且您不希望这两种类型的模型独立发展,那么您可能对前者相当安全。

显然,这两种方法并不相互排斥,并且在逐个屏幕的基础上做出决定并非闻所未闻。

关于c# - 当你拥有 Rich Models 时你会做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7674947/

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