没有名称约定的AutoMapper Flattening

时间:2017-08-29 09:04:16

标签: c# automapper

我正在尝试将我的域模型展平为合同类型

这是我的模特:

public interface IPrice
{
    IItem Item { get; set; }
    Money Money {get; set;}
}

public interface IItem
{
    IItemHeader Header { get; set; }
}

public interface IItemHeader
{
    string Name{ get; set; }
}

这是我的合同:

public class Price
{
  public string Name{ get; set; }  
}

现在,我知道如果我将合同名称字段更改为 ItemHeaderName AutoMapper将处理该问题,并在我在IPrice和Price之间进行映射时设置正确的值。但如果我不喜欢这个名字(即ItemHeaderName)并坚持使用“名称”呢?还有其他选择吗?

2 个答案:

答案 0 :(得分:2)

如果你只称它为Name,那么你需要MapFrom。如果默认命名约定对您不起作用,您也可以使用自定义命名约定。

答案 1 :(得分:0)

我们需要做类似的事情:

 CreateMap<Contract.Entities.Price, Model.Entities.IPrice>().
            ReverseMap().
            ForMember(model => model.Name, model => model.MapFrom(src => src.Item.Header.Name)).