Если кто-то знает больше способов сделать это в. NET, а также что вы думаете о том, что подходит? Какой подход вы выбрали и почему?
Вот тесты различных способов копирования объектов в .NET.
Тесты, связанные с этим исходным потоком: Как скопировать значение из класса X в класс Y с тем же именем свойства в c #?
Итак, вот оно, вы можете запустить его самостоятельно:
static void Main(string[] args)
{
Student _student = new Student();
_student.Id = 1;
_student.Name = "Timmmmmmmmaaaahhhh";
_student.Courses = new List();
_student.Courses.Add(101);
_student.Courses.Add(121);
Stopwatch sw = new Stopwatch();
Mapper.CreateMap();
StartTest(sw, "Auto Mapper");
for (int i = 0; i < 1000000; i++)
{
StudentDTO dto = Mapper.Map(_student);
}
StopTest(sw);
StartTest(sw, "Implicit Operator");
for (int i = 0; i < 1000000; i++)
{
StudentDTO itemT = _student;
}
StopTest(sw);
StartTest(sw, "Property Copy");
for (int i = 0; i < 1000000; i++)
{
StudentDTO itemT = new StudentDTO
{
Id = _student.Id,
Name = _student.Name,
};
itemT.Courses = new List();
foreach (var course in _student.Courses)
{
itemT.Courses.Add(course);
}
}
StopTest(sw);
StartTest(sw, "Emit Mapper");
ObjectsMapper emitMapper = ObjectMapperManager.DefaultInstance.GetMapper();
for (int i = 0; i < 1000000; i++)
{
StudentDTO itemT = emitMapper.Map(_student);
}
StopTest(sw);
}
Тесты результаты на моем ПК:
Автоматическое отображение теста: 22322 мс
Неявный оператор теста: 310 мс
Копия свойства теста: 250 мс
Картограф Emit Test: 281 мс
Вы можете получить emit и auto -mappers от здесь: