作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 AutoMapper 8.0 之前,我使用此代码通过字符串查找属性映射,例如:实体模型具有名为“currency_id”的属性,DTO 具有名为“currency”的属性。我在 AutoMapper 中定义了双向映射,我使用这段代码来查找源/目标属性关系
public static string GetDestinationPropertyFor<TSrc, TDst>(IMapper IMapper, string sourceProperty)
{
var mapper = AutoMapper.IMapper.ConfigurationProvider;
// TSrc = source generic type
// TDst = destination generic type
var map = mapper.FindTypeMapFor<TSrc, TDst>();
var propertyMap = map.GetPropertyMaps()
.FirstOrDefault(pm =>
pm.SourceMember.Name == sourceProperty
);
return propertyMap.DestinationProperty.Name;
}
在 AutoMapper 配置文件中:
this.CreateMap<EntityModels.contact, DTO.contact>()
.ForMember(m => m.currency, src => src.MapFrom(f => f.currency_id))
;
this.CreateMap<DTO.contact, EntityModels.contact>()
.ForMember(m => m.currency_id, src => src.MapFrom(f => f.currency))
;
当我这样调用我的方法时:
var _dboField = GetDestinationPropertyFor<DTO.contact, EntityModels.contact>(this.mapper, "currency");
Console.WriteLine(_dboField);
// output should be "currency_id"
升级到 AutoMapper 8.0 后,我在构建时遇到了这个错误:
“TypeMap”不包含“GetPropertyMaps”的定义,并且找不到接受“TypeMap”类型的第一个参数的可访问扩展方法“GetPropertyMaps”(您是否缺少 using 指令或程序集引用?)
AutoMapper 8.0 中 GetPropertyMaps 的替代品是什么?
谢谢!
最佳答案
正如 Lucian 所建议的,MemberMaps 是一个可能的替代品。但是,PropertyMaps 与 AutoMapper 7.0 中的 GetPropertyMaps 完全相同。 DestinationProperty
也已重命名为 DestinationMember
。
AutoMapper 7.0 代码:
public static string GetDestinationPropertyFor<TSrc, TDst>(IMapper IMapper, string sourceProperty)
{
var mapper = AutoMapper.IMapper.ConfigurationProvider;
// TSrc = source generic type
// TDst = destination generic type
var map = mapper.FindTypeMapFor<TSrc, TDst>();
var propertyMap = map.GetPropertyMaps()
.FirstOrDefault(pm =>
pm.SourceMember.Name == sourceProperty
);
return propertyMap.DestinationProperty.Name;
}
AutoMapper 8.0 代码:
public static string GetDestinationPropertyFor<TSrc, TDst>(IMapper IMapper, string sourceProperty)
{
var mapper = AutoMapper.IMapper.ConfigurationProvider;
// TSrc = source generic type
// TDst = destination generic type
var map = mapper.FindTypeMapFor<TSrc, TDst>();
var propertyMap = map.PropertyMaps
.FirstOrDefault(pm =>
pm.SourceMember.Name == sourceProperty
);
return propertyMap.DestinationMember.Name;
}
关于.net-core - AutoMapper 8.0 缺少 GetPropertyMaps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53371494/
在 AutoMapper 8.0 之前,我使用此代码通过字符串查找属性映射,例如:实体模型具有名为“currency_id”的属性,DTO 具有名为“currency”的属性。我在 AutoMappe
我是一名优秀的程序员,十分优秀!