AutoMapper - 忽略所有实现的基类属性

Jür*_*ock 5 c# automapper

我想使用 AutoMapper 导入数据。

我的目标类都继承自一个基类Entity,该基类定义了一些在源 ( CreatedOn, CreatedBy, ModifiedOn, ModifiedBy)中不存在的属性

假设我有一个源类 Unit:

public class UnitOld
{
    public int Id { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是我的目标课程单元:

public class Unit : Entity
{
    public Guid UnitId { get; set; }
    public string UnitName { get; set; }
}

public class Entity
{
    public string CreatedOn { get; set; }
    public string CreatedBy { get; set; }
    public string ModifiedOn { get; set; }
    public string ModifiedBy { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在要创建我的映射,我必须写:

        Mapper.CreateMap<UnitOld, Unit>()
            .ForMember(d => d.UnitName, o => o.MapFrom(s => s.Name))
            .ForMember(d => d.UnitId , o => o.Ignore())
            .ForMember(d => d.CreatedOn, o => o.Ignore())
            .ForMember(d => d.CreatedBy, o => o.Ignore())
            .ForMember(d => d.ModifiedOn, o => o.Ignore())
            .ForMember(d => d.ModifiedBy, o => o.Ignore());
Run Code Online (Sandbox Code Playgroud)

这工作正常,问题是我有多个从实体继承的类,我不想重复自己。是否可以告诉 AutoMapper For every class that interits from entity ignore the properties ...

Jür*_*ock 6

我想可能有一个更好的解决方案,它会告诉自动映射器忽略每个映射中的一些基类属性。

但是,此方法对我有用(这将忽略所有映射中以这些字符串开头的所有属性。

Mapper.AddGlobalIgnore("CreatedOn");
Mapper.AddGlobalIgnore("CreatedBy");
Mapper.AddGlobalIgnore("ModifiedOn");
Mapper.AddGlobalIgnore("ModifiedBy");
Run Code Online (Sandbox Code Playgroud)