问题标签 [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.

0 投票
1 回答
106 浏览

emitmapper - EmitMapper(扁平化为分层)

我想根据简单的命名约定从扁平对象映射到分层对象。例如:

简单的命名约定是 FlattenedObject 中的双下划线。

我将如何使用 EmitMapper 完成此任务?

0 投票
1 回答
217 浏览

c# - 将映射器域模型发射到视图模型

好像看不懂怎么做下面的映射,Domain EF有两种模式:

现在有一个 ViewModel,我想在表单上显示给用户:

尝试使用 Emit Mapper,但我不明白如何实现映射字段 NameA,因为它实际上位于另一个表中:

我会很感激你的帮助。

0 投票
2 回答
2586 浏览

c# - Automapper 使用自定义映射展平多个复杂对象

因此,除了通常的 DTO 到业务映射器之外,我还有一些东西,我正在尝试用最少的映射代码来映射它们。

设置

映射器配置

这样做会抛出

错误:AutoMapper.AutoMapperConfigurationException:成员的自定义配置仅支持类型上的顶级单个成员。

而且我还需要服用AnotherClass.TokensSomeClass.Tokens并将其添加到Target.Tokens.

我知道我可以使用.ConvertUsing,但是我必须为每个属性定义映射,并且我失去了基于约定的映射来匹配属性的优势。

有没有其他方法可以实现这一点(除了.ConvertUsing手动映射每个属性)?

如果不是通过Automapper,是否可以通过EmitMapper?我想通过 EmitMapper's 添加到 Tokens 列表可能是可行的PostProcessing

更新

经过一番黑客攻击,我找到了一种方法:

注意:我这样做是Name.ToLowerInvariant()为了能够匹配AccountID->AccountId和类似的。

用法

我发现了一些其他属性IMappingExpression,我也许可以使用和清理很多这些属性。当我找到它们时会更新。

0 投票
1 回答
636 浏览

c# - 为什么发射比反射快

我一直在阅读很多关于发射以及它如何比反射快得多的信息,但一直无法找出原因。我知道 emit 正在注入 IL 代码,但是为什么在进行像 ORM 这样的属性映射时这比反射快?

参考这种用例: Emit mapper vs valueinjecter or automapper performance

0 投票
0 回答
53 浏览

emitmapper - 让 emitmapper 意识到继承

我试图让 emitmapper 了解我的对象中的层次结构,以便它可以为类选择最派生的映射。说我有这些课程

他们各自的 DTO(PaymentDTO、GuaranteePaymentDTO 等)和我要映射的对象都有一个 Payment 集合,其中每个都可以是从 Payment 派生的任何类型,包括 Payment 本身,而目标是该对象的 DTO,带有当然是收集 PaymentDTO。如果我不配置任何东西,emitmapper 总是会创建并映射基本类型。让它知道最派生类型的最佳方法是什么?

0 投票
1 回答
1240 浏览

c# - EmitMapper - 从抽象模型对象到抽象 DTO 的通用映射

在从ValueInjecter过渡到EmitMapper时,我需要一些帮助(出于性能原因,我已决定这样做)。我的用例是最常见的用例之一:根据一些规则将模型对象映射到 DTO。

其中一条规则是:如果属性的类型是 DomainObject 的子类,则应将其映射到其对应的 DTO。使用具体类型没关系,但我也希望它与抽象类型一起使用。问题是我不知道如何以动态方式告诉 EmitMapper 应该使用哪个 DTO。

在 ValueInjecter 代码中:

由于我所有的 DTO 都实现了DTO<>接口,我认为我可以使用 EmitMapper 的DefaultMapConfig.ConvertGeneric方法,但我就是不知道怎么做。

为了完整起见,我包括了我当前的(不工作的)代码:

当我尝试在测试中使用此映射时,出现以下异常

编辑:这是我想映射的对象的一个​​例子。

0 投票
0 回答
261 浏览

c# - EmitMapper 和 ValueInjecter 与 IList

我正在对AutoMapperFasMapperValueInjecterEmitMapper进行性能测试,当我尝试映射类型列表时,我只遇到 EmitMapperValueInjecter的问题IList<T>

这是我为所有映射器使用的代码:

那是我对EmitMapper的适配器实现:

那是为ValueInjecter

我有一个包含该方法的接口Adapt<TSource, TTarget>(TSource source)

我做错了什么?它适用于AutoMapperFastMapper!如果我更改为List<T>它适用于所有映射器。