Many of my classes need function conversions.
- DataRow → Object Converters
- ViewModel ↔ Model Converters
My question is where should functions live?
Option 1: inside the source class
public class Employee
{
public EmployeeViewModel ToViewModel() {}
}
var vm = myEmployee.ToViewModel()
Option 2: inside the destination class
public class EmployeeViewModel
{
public static EmployeeViewMOdel FromModel() {}
}
var vm = EmployeeViewModel.FromModel(myEmployee);
Option 3: inside the converter
public class EmployeeModelViewModelConverter
{
public static EmployeeViewModel ConvertToViewModel(Employee) {}
}
var vm = new EmployeeModelViewModelConverter.ConvertToViewModel(myEmployee);
Option 3 is perhaps the cleanest because it has tons of converter classes, as well as tons of static functions or tons of IOC initialization / injection. It also has the ugliest syntax, or you need to add another class using extensions.
: ViewModel/Model, , . , .