gpt4 book ai didi

c# - 如果源和目标类型相同,是否需要使用 asp.net Auto Mapper

转载 作者:行者123 更新时间:2023-11-30 23:08:11 24 4
gpt4 key购买 nike

我正在阅读 .NET 中基于约定的对象到对象映射器 https://github.com/AutoMapper/AutoMapper .它允许映射两个对象之间的属性。但我的问题是我们什么时候需要使用这个映射器?假设在我的代码中源对象和目标对象具有相同的类型,那么我需要这个映射器吗?例如,我可以使用简单的 = 操作映射具有相同类型的对象,如下所示:-

Staff source = new Staff ()
{
FirstName= "Source First",
LastName = "Source Last",
Age =22,
Address = "Soruce 123..."
};

Staff destination = new Staff ()
{
FirstName= "Destination First",
LastName = "Destination Last",
Age =20,
Address = "Destination 123..."
};

source = destination;
entities.Staffs.Add(source);
entities.Save();

在这种情况下,源对象将与目标属性一起保存在哪里?而且我不必使用自动映射器?这是正确的吗?

最佳答案

您正在使用 source = destination;,它将仅为目标对象复制内存位置的引用。在您提供的示例中,这并不重要,因为您正在向实体添加对象。

如果您想要在单独的内存位置完全克隆对象以对该对象进行其他处理,请使用 ICloneable 和 MemberwiseClone,以防万一您不想将 AutoMapper 用于映射完全相同的内容。

public class Staff : ICloneable
{
public string FirstName{get;set;}
public string LastName{get;set;}
public int Age{get;set;}
public string Address{get;set;}

public object Clone()
{
return this.MemberwiseClone();
}
}

然后,您可以使用 source = (Staff)destination.Clone();

这将只允许浅拷贝。如果你想要深拷贝,you can serialize and deserialize .

关于c# - 如果源和目标类型相同,是否需要使用 asp.net Auto Mapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46688060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com