我创建了一个自定义映射器类,如下所示,但ABP在映射时不会自动注册和使用它。
https://docs.abp.io/en/abp/4.4/Object-To-Object-Mapping#iobjectmapper-t源目标接口
很抱歉缺少细节,我在下面添加了一些,
我发现mycustomermapperclass的接口与我的对象映射器不同
我应该为所有容器类型实现吗?
public class HierachyItemCustomMapper : IObjectMapper<HierachyItem, HierachyItemDto>, ITransientDependency
{
我的用法像
var nodeListDto = ObjectMapper.Map<IEnumerable<HierachyItem>, IEnumerable<HierachyItemDto>>(nodeList);
我该怎么处理?
显然,我正在寻找一个结果,而不是foreach迭代器循环。
编辑:它发现它是已知的问题低于
https://github.com/abpframework/abp/issues/94
我刚刚尝试过,它似乎如预期的那样工作。
这是我在Application
层中创建的HierachyItemCustomMapper
类。(应该在Application
层中创建。(
public class HierachyItemCustomMapper : IObjectMapper<HierachyItem, HierachyItemDto>, ITransientDependency
{
public HierachyItemDto Map(HierachyItem source)
{
return new HierachyItemDto
{
Name = source.Name
};
}
public HierachyItemDto Map(HierachyItem source, HierachyItemDto destination)
{
destination.Name = source.Name;
return destination;
}
}
我刚刚在我的两个类(HierachyItem和HierachyGItemDto(中添加了一个名为
Name
的属性进行测试。
您可能没有在Application
层中定义它,这导致了问题。你能查一下吗?
很简单,您的定义是错误的它应该像一样
public class HierachyItemCustomMapper : IObjectMapper<IEnumerable<HierachyItem>,
IEnumerable<HierachyItemDto>>, ITransientDependency {}
因为它搜索精确的定义匹配,并且如果您还想添加使用ObjectMapper.Map<HierachyItem, HierachyItemDto>
的功能你可以像一样定义你的自定义映射器
public class HierachyItemCustomMapper : IObjectMapper<IEnumerable<HierachyItem>,
IEnumerable<HierachyItemDto>>, IObjectMapper<HierachyItem, HierachyItemDto> ,
ITransientDependency {}
您将同时实现祝好运