映射期间映射回调之前/之后的自动映射

时间:2017-08-03 13:04:11

标签: c# .net automapper

我正在使用 ASP.NET Core Automapper 6.1.0

我有两种看起来像这样的

public class ExampleDTO
{
    public Guid Id { get; set; }
    public ProviderDTO Provider { get; set; }
}


public class Example
{
    public Guid Id { get; set; }
    public Guid Provider { get; set; }
}

ProviderDTO类(在这种情况下是相关的)

public class ProviderDTO
{
    public Guid Id { get; set; }
    public string Name { get; set; }
}

AutoMapper配置如下所示:

CreateMap<Example, ExampleDTO>().ForMember(x => x.Provider, opt => opt.Ignore());

CreateMap<ExampleDTO, Example>().ForMember(dest => dest.Provider,
                                           opt => opt.MapFrom(src => src.Provider.Id));

当我从Example映射到ExampleDTO时,我想传递ProviderDTO类型的值。

我试过这样的事情。

_mapper.Map<ExampleDTO>(example, opt => opt.AfterMap((src, dest) => dest.Provider = myProvider));

我明白了

'object' does not contain a defenition for 'Provider' and no extension method

这可以实现吗?如果是的话,我做错了什么?

1 个答案:

答案 0 :(得分:2)

使用AutoMapper,您可能需要提供源和目标类型,例如:

_mapper.Map<Example, ExampleDTO>(example, opt => {
    opt.AfterMap((src, dest) => dest.Provider = myProvider))
});