ABP不会自动使用自定义映射程序类



我创建了一个自定义映射器类,如下所示,但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 {}

您将同时实现祝好运

最新更新