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