我在C#winforms应用程序中使用MVP模式,并遇到了以下设计问题。我的域中有一个User
类和一个UserCollectionDAO
类,它基本上从数据库中加载所有用户的一些其他信息。当我通过演示者向我的视图展示一组用户时,我不想显示他们所有的属性。例如,我的用户具有以下属性:
class User
{
public User(int id)
{
Id = id;
}
public int Id { get; private set; }
public string Name { get; set; }
public LocationId { get; set; }
}
我想在我的Listview
用户中显示的是我可以从系统中的其他数据结构获取的名称和位置名称。同时我想在我的应用程序的其他区域使用LocationId和Id。我已经阅读了可能需要使用的另一个层,即DTO对象的层。您对此有何看法,能否看到实现我想要的另一种方式?如何将信息从View传递到DTO用户实例到域用户实例?
非常感谢任何想法。
答案 0 :(得分:1)
通常,您的域类/模型会转换为ViewModel(特定于特定视图的模型,隐藏模型的特定属性)。
在domain services layer创建一个方法,将模型转换为视图模型或使用像AutoMapper这样的库将其自动转换给您。您的域用户类上的某些属性可能需要公开(为什么不是?)由AutoMapper自动复制。
进一步阅读:MVVM pattern