如果有人知道任何更多的方式这样做。净还有什么是你的意见有关这一办法?这种方法选择和为什么?

这里是测试不同的方式的对象复制。网。

测试关于这个原始的线: 如何复制的价值从X类课Y同财产的名字在c#?

所以,在这里,可以运行它自己:

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);
    }

测试的结果在我的电脑:

测试自动映射器:22322ms

试验隐含的经营者:310ms

试验性复制:250毫秒

测试射器:281ms

你可以得到这些的和自动映射器从这里:

http://emitmapper.codeplex.com/

http://automapper.codeplex.com/

有帮助吗?

解决方案

它还可以使用T4以产生类,将产生财产的副本代码。

好的:运行作为快,因为它是可能的 坏:"编码"T4 丑:使建立脚本,让你来汇编这一切在一个去

其他提示

你有没有试图压倒一切克隆人的方法来复制目的实例?这样一来,你会得到一个新的学生象这样的:

for (int i = 0; i < 1000000; i++) 
{ 
     StudentDTO itemT = _student.Clone(); 
}

我找到这种方法最简单的方式复制到新的对象,虽然我没有做任何速度的测试,以找出它如何执行对方法的建议。

克隆被复制的同一类型,不复制从2不同的对象类型,然后不能用于这一范围。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top