我已经研究了基于属性的自定义解析器,但我似乎只是找到旧版AutoMapper的代码。
我的用例目前相当简单。我正在使用AutoMapper将DTO映射到域实体。
DTO和域实体上的字段名称都匹配100%,除了每对一个字段,此后称为“密钥字段”。我有大约20个DTO - >此时域名配对,这个数字会增长。
如果我可以将AutoMapper的自动名称解析用于所有属性映射,除了单个“Key”字段,那将是很好的。
域实体上的“Key”字段遵循约定Key,并且始终是字符串。
可以重写DTO上的“Key”字段以匹配域实体,允许在所有情况下使用基于名称的映射,但是我很好奇如果我想在PropertyInfo中使用PropertyInfo将会是什么解决方案我的ForMember表达,或者甚至可能。
答案 0 :(得分:0)
我想你可以使用PropertyInfo。如何使用AfterMap为您的键属性设置值:
class Entity
{
public int Key { get; set; }
public int MyProperty1 { get; set; }
}
class Dto
{
public dynamic MyKeyProperty { get; set; }
public int MyProperty1 { get; set; }
}
Mapper.Initialize(cfg =>
{
cfg.CreateMap<Entity, Dto>()
.ForMember(nameof(Dto.MyKeyProperty), c => c.Ignore())
.AfterMap((e, d) => { d.MyKeyProperty = $"{e.Key} ???"; });
});