自动映射器映射属性
Automapper mapping properties
假设我有以下结构:
public class EntityDto
{
int EntityId { get; set; }
}
public class Entity
{
EntityId<int> EntityId { get; }
}
public class EntityId<T>
{
T Id { get; set; }
}
在这种情况下,定义映射配置文件的合适方法是什么?
当然是两个方向。
任何帮助将不胜感激。
假设您的 类 看起来像这样:
class EntityDto
{
public int EntityId { get; set; }
}
class EntityId<T>
{
public T Id { get; set; }
}
class Entity
{
public EntityId<int> EntityId { get; set; }
}
映射将如下所示:
static void CreateMapForEntityId<T>()
{
Mapper.CreateMap<T, EntityId<T>>()
.ForMember(_ => _.Id, options => options.MapFrom(_ => _));
}
static void TestMapping(int id)
{
CreateMapForEntityId<int>();
Mapper
.CreateMap<Entity, EntityDto>()
.ForMember(_ => _.EntityId, options => options.MapFrom(_ => _.EntityId.Id))
.ReverseMap();
Mapper.AssertConfigurationIsValid();
var entity = new Entity { EntityId = new EntityId<int> { Id = id } };
var entityDto = Mapper.Map<EntityDto>(entity);
Debug.Assert(entityDto.EntityId == id);
var entityClone = Mapper.Map<Entity>(entityDto);
Debug.Assert(entityClone.EntityId.Id == id);
}
基本上不会有任何"auto"映射。
假设我有以下结构:
public class EntityDto
{
int EntityId { get; set; }
}
public class Entity
{
EntityId<int> EntityId { get; }
}
public class EntityId<T>
{
T Id { get; set; }
}
在这种情况下,定义映射配置文件的合适方法是什么? 当然是两个方向。 任何帮助将不胜感激。
假设您的 类 看起来像这样:
class EntityDto
{
public int EntityId { get; set; }
}
class EntityId<T>
{
public T Id { get; set; }
}
class Entity
{
public EntityId<int> EntityId { get; set; }
}
映射将如下所示:
static void CreateMapForEntityId<T>()
{
Mapper.CreateMap<T, EntityId<T>>()
.ForMember(_ => _.Id, options => options.MapFrom(_ => _));
}
static void TestMapping(int id)
{
CreateMapForEntityId<int>();
Mapper
.CreateMap<Entity, EntityDto>()
.ForMember(_ => _.EntityId, options => options.MapFrom(_ => _.EntityId.Id))
.ReverseMap();
Mapper.AssertConfigurationIsValid();
var entity = new Entity { EntityId = new EntityId<int> { Id = id } };
var entityDto = Mapper.Map<EntityDto>(entity);
Debug.Assert(entityDto.EntityId == id);
var entityClone = Mapper.Map<Entity>(entityDto);
Debug.Assert(entityClone.EntityId.Id == id);
}
基本上不会有任何"auto"映射。