使用AutoMapper,最佳实践是这样的吗?

货郎大叔 2019-12-26 11:19:05
WPF应用程序,采用MVVM设计。一个业务模型Person类:

public class Person
{
public string PersonName { get; set; }
}

在使用AutoMapper的时候,有下面两种方式:
第一种:在ViewModel类中创建与Person类中一样的属性:

public class DialogPowerViewModel : BindableBase
{
private string _PersonName;
public string PersonName
{
get { return _PersonName; }
set { SetProperty(ref _PersonName, value); }
}
}

然后Person类和ViewModel类直接映射,ViewModel再提供给视图显示。
第二种:另外再创建一个PersonDto类(实现更改通知),然后在ViewModel中创建一个PersonDto类型的属性。

public class PersonDto: BindableBase
{
private string _PersonName;
public string PersonName
{
get { return _PersonName; }
set { SetProperty(ref _PersonName, value); }
}
}
public class DialogPowerViewModel : BindableBase
{
private PersonDto _personDto;
public PersonDto personDto
{
get { return _personDto; }
set { SetProperty(ref _personDto, value); }
}
}

然后,Person类和PersonDto映射,视图直接绑定到ViewModel中personDto对象的属性上。


请问,上面两种方式,哪一种才是正确的呢?
...全文
215 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
货郎大叔 2019-12-28
  • 打赏
  • 举报
回复
😄😢😢😣😣……
正怒月神 2019-12-26
  • 打赏
  • 举报
回复
引用 2 楼 货郎大叔 的回复:
[quote=引用 1 楼 正怒月神 的回复:] 第一种就可以了。
可是,在实践中,比如Prism中,基本是不直接访问ViewModel的[/quote] 但是正常来说,Person和viewmodel也不是直接映射的。
货郎大叔 2019-12-26
  • 打赏
  • 举报
回复
引用 1 楼 正怒月神 的回复:
第一种就可以了。
可是,在实践中,比如Prism中,基本是不直接访问ViewModel的
正怒月神 2019-12-26
  • 打赏
  • 举报
回复
第一种就可以了。
货郎大叔 2019-12-26
  • 打赏
  • 举报
回复
大师快来呀,我等着写总结…………
正怒月神 2019-12-26
  • 打赏
  • 举报
回复
引用 6 楼 货郎大叔 的回复:
[quote=引用 5 楼 正怒月神 的回复:] 这两种方案是谁给你规定的?
你的意思是……[/quote] 我意思是,为何会有规定说viewmodel和model是要对应的?
货郎大叔 2019-12-26
  • 打赏
  • 举报
回复
引用 5 楼 正怒月神 的回复:
这两种方案是谁给你规定的?
你的意思是……
正怒月神 2019-12-26
  • 打赏
  • 举报
回复
引用 4 楼 货郎大叔 的回复:
[quote=引用 3 楼 正怒月神 的回复:] [quote=引用 2 楼 货郎大叔 的回复:] [quote=引用 1 楼 正怒月神 的回复:] 第一种就可以了。
可是,在实践中,比如Prism中,基本是不直接访问ViewModel的[/quote] 但是正常来说,Person和viewmodel也不是直接映射的。[/quote] 可是,第一种就是直接映射的啊。应该选第二种吧[/quote] 这两种方案是谁给你规定的?
货郎大叔 2019-12-26
  • 打赏
  • 举报
回复
引用 3 楼 正怒月神 的回复:
[quote=引用 2 楼 货郎大叔 的回复:] [quote=引用 1 楼 正怒月神 的回复:] 第一种就可以了。
可是,在实践中,比如Prism中,基本是不直接访问ViewModel的[/quote] 但是正常来说,Person和viewmodel也不是直接映射的。[/quote] 可是,第一种就是直接映射的啊。应该选第二种吧

110,529

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧