gpt4 book ai didi

mapping - 使用 automapper 有什么好处?

转载 作者:行者123 更新时间:2023-12-04 15:15:42 24 4
gpt4 key购买 nike

我的问题可能很愚蠢,但我很确定我错过了这个问题的一个非常重要的部分。我必须做一些对象到对象的映射(在 C# 项目中使用的域类和发送到 Flash 客户端的类之间)。

我的第一选择是 Automapper。但是我遇到了一些问题(嵌套属性,而不是定义的无参数构造函数)。事实证明,用 automapper 映射一个非常复杂的类型并不是那么容易。

那么我的问题是:为什么不实现如下方法:

  ClassA GetClassAByClassB(ClassB pObj)

{
ClassA objA = new ClassA();
objA.Prop1 = pObj.Prop1;
objA.NestedType.Prop2 = pObj.Prop2;
//....Some more.....
return objA;
}

它具有与使用 Automapper 完成的映射完全相同的灵活性级别。您仍然必须提供源对象中的哪些属性被复制到目标对象中的哪些属性中。您只需使用 '=' 而不是 lambda 表达式即可执行此操作。

但是,如果您更改域类中的某些内容,则无论如何都必须更改此“映射”部分。那么,说服我使用 Automapper 的主要因素是什么(正如我在开始时所说的,我很确定我遗漏了一些重要的东西)。

最佳答案

因为有了 AutoMapper,您 不要必须实现这些方法;-)

你的方法需要写很多

classA.propA = classB.propA;
classA.propB = classB.propB;
classA.propC = classB.propC;
classA.propD = classB.propD;
classA.propE = classB.propE;

AutoMapper 使用约定来计算它本身。更重要的是,您不必担心 pObj == null (在这种情况下,您的代码将抛出 NulLReferenceException)。

您还可以在 map 中定义转换(即字符串到日期时间)。
Mapper.CreateMap<User, UserModel>().ForMember(d => d.LastLogin, c => c.MapFrom<DateTime?>(u => u.Credential.LastLogin));

AutoMapper 也支持嵌套属性。

在此处阅读更多信息: AutoMapper Introduction and Samples

关于mapping - 使用 automapper 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3996212/

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