其他分享
首页 > 其他分享> > CodeGo.net>类转换方法去哪里

CodeGo.net>类转换方法去哪里

作者:互联网

我的许多课程最终都需要转换函数.

> DataRow->对象转换器
> ViewModel<->模型转换器

我的问题是功能应该放在哪里?

选项1:在源类内部

public class Employee
{
  public EmployeeViewModel ToViewModel() {}
}

var vm = myEmployee.ToViewModel()

选项2:在目标类别内

public class EmployeeViewModel
{
  public static EmployeeViewMOdel FromModel() {}
}

var vm = EmployeeViewModel.FromModel(myEmployee);

选项3:在转换器内部

public class EmployeeModelViewModelConverter
{
  public static EmployeeViewModel ConvertToViewModel(Employee) {}
}
var vm = new EmployeeModelViewModelConverter.ConvertToViewModel(myEmployee);

选项3似乎是最干净的方法,但要花费大量的转换器类,或者大量的静态函数或大量的初始化/ IOC注入.它也具有最丑陋的语法,或者您必须使用扩展名添加另一个类.

澄清:我不是在谈论ViewModel / Model类,而是任何需要将一个类转换为另一个类的内容.作为另一个示例,我有一个渲染系统,在该系统中,经常需要将对象转换为可渲染的基元.

解决方法:

我相信Single Responsibility Principle建议使用#3,这是它自己的转换器类.

编辑:如果您需要在单独的方法中,那么我会坚持我上面所说的.但是@kyoryu关于ViewModel有一个有效的观点,但是,我只同意将Model作为ViewModel构造函数中的参数而不是作为单独的方法来传递.

标签:class-design,c
来源: https://codeday.me/bug/20191023/1916462.html