问题标签 [emitmapper]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
emitmapper - EmitMapper(扁平化为分层)
我想根据简单的命名约定从扁平对象映射到分层对象。例如:
简单的命名约定是 FlattenedObject 中的双下划线。
我将如何使用 EmitMapper 完成此任务?
c# - 将映射器域模型发射到视图模型
好像看不懂怎么做下面的映射,Domain EF有两种模式:
现在有一个 ViewModel,我想在表单上显示给用户:
尝试使用 Emit Mapper,但我不明白如何实现映射字段 NameA,因为它实际上位于另一个表中:
我会很感激你的帮助。
c# - Automapper 使用自定义映射展平多个复杂对象
因此,除了通常的 DTO 到业务映射器之外,我还有一些东西,我正在尝试用最少的映射代码来映射它们。
设置
映射器配置
这样做会抛出
错误:AutoMapper.AutoMapperConfigurationException:成员的自定义配置仅支持类型上的顶级单个成员。
而且我还需要服用AnotherClass.Tokens
,SomeClass.Tokens
并将其添加到Target.Tokens
.
我知道我可以使用.ConvertUsing
,但是我必须为每个属性定义映射,并且我失去了基于约定的映射来匹配属性的优势。
有没有其他方法可以实现这一点(除了.ConvertUsing
手动映射每个属性)?
如果不是通过Automapper,是否可以通过EmitMapper?我想通过 EmitMapper's 添加到 Tokens 列表可能是可行的PostProcessing
。
更新
经过一番黑客攻击,我找到了一种方法:
注意:我这样做是Name.ToLowerInvariant()
为了能够匹配AccountID
->AccountId
和类似的。
用法
我发现了一些其他属性IMappingExpression
,我也许可以使用和清理很多这些属性。当我找到它们时会更新。
c# - 为什么发射比反射快
我一直在阅读很多关于发射以及它如何比反射快得多的信息,但一直无法找出原因。我知道 emit 正在注入 IL 代码,但是为什么在进行像 ORM 这样的属性映射时这比反射快?
参考这种用例: Emit mapper vs valueinjecter or automapper performance
emitmapper - 让 emitmapper 意识到继承
我试图让 emitmapper 了解我的对象中的层次结构,以便它可以为类选择最派生的映射。说我有这些课程
他们各自的 DTO(PaymentDTO、GuaranteePaymentDTO 等)和我要映射的对象都有一个 Payment 集合,其中每个都可以是从 Payment 派生的任何类型,包括 Payment 本身,而目标是该对象的 DTO,带有当然是收集 PaymentDTO。如果我不配置任何东西,emitmapper 总是会创建并映射基本类型。让它知道最派生类型的最佳方法是什么?
c# - EmitMapper - 从抽象模型对象到抽象 DTO 的通用映射
在从ValueInjecter过渡到EmitMapper时,我需要一些帮助(出于性能原因,我已决定这样做)。我的用例是最常见的用例之一:根据一些规则将模型对象映射到 DTO。
其中一条规则是:如果属性的类型是 DomainObject 的子类,则应将其映射到其对应的 DTO。使用具体类型没关系,但我也希望它与抽象类型一起使用。问题是我不知道如何以动态方式告诉 EmitMapper 应该使用哪个 DTO。
在 ValueInjecter 代码中:
由于我所有的 DTO 都实现了DTO<>
接口,我认为我可以使用 EmitMapper 的DefaultMapConfig.ConvertGeneric
方法,但我就是不知道怎么做。
为了完整起见,我包括了我当前的(不工作的)代码:
当我尝试在测试中使用此映射时,出现以下异常
编辑:这是我想映射的对象的一个例子。
c# - EmitMapper 和 ValueInjecter 与 IList
我正在对AutoMapper、FasMapper、ValueInjecter和EmitMapper进行性能测试,当我尝试映射类型列表时,我只遇到 EmitMapper和ValueInjecter的问题IList<T>
这是我为所有映射器使用的代码:
那是我对EmitMapper的适配器实现:
那是为ValueInjecter:
我有一个包含该方法的接口Adapt<TSource, TTarget>(TSource source)
我做错了什么?它适用于AutoMapper和FastMapper!如果我更改为List<T>
它适用于所有映射器。