Si alguien sabe más formas de hacerlo en .NET y también ¿cuál es su opinión sobre ese enfoque? ¿Qué enfoque eliges y por qué?Enfoques de copia de objeto en .net: Auto Mapper, Emit Mapper, Operación implícita, Copia de propiedad
Aquí están las pruebas de diferentes formas de copia de objetos en .NET.
pruebas relacionadas con este hilo original: How to copy value from class X to class Y with the same property name in c#?
lo tanto, aquí se trata, puede ejecutar por sí mismo:
static void Main(string[] args)
{
Student _student = new Student();
_student.Id = 1;
_student.Name = "Timmmmmmmmaaaahhhh";
_student.Courses = new List<int>();
_student.Courses.Add(101);
_student.Courses.Add(121);
Stopwatch sw = new Stopwatch();
Mapper.CreateMap<Student, StudentDTO>();
StartTest(sw, "Auto Mapper");
for (int i = 0; i < 1000000; i++)
{
StudentDTO dto = Mapper.Map<Student, StudentDTO>(_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<int>();
foreach (var course in _student.Courses)
{
itemT.Courses.Add(course);
}
}
StopTest(sw);
StartTest(sw, "Emit Mapper");
ObjectsMapper<Student, StudentDTO> emitMapper = ObjectMapperManager.DefaultInstance.GetMapper<Student, StudentDTO>();
for (int i = 0; i < 1000000; i++)
{
StudentDTO itemT = emitMapper.Map(_student);
}
StopTest(sw);
}
resultados de las Pruebas en mi PC:
Auto Test Mapper: 22322 ms
Prueba implícita Operador: 310 ms
Copia de prueba del inmueble: 250 ms
prueba Emitir Mapper: 281 ms
Usted puede conseguir emiten y -mappers automóviles desde aquí:
http://emitmapper.codeplex.com/
http://automapper.codeplex.com/
Eso es genial, pero ¿cuál es su pregunta? – Oded
Sí, no veo el sentido de todo esto. Necesita un objetivo antes de poder decidir que necesita una copia (en lugar de usar el objeto original) y necesita un objetivo para elegir el enfoque correcto. Dicho esto, otra copiadora es MemberwiseClone(). – Qwertie
¿Estás tratando de crear una copia del objeto para probar ... No entiendo la pregunta ... puedes usar mole en .net4 ... Mapper funcionaría mejor ... Pero aclara tu pregunta –