使用Automapper映射时如何更改属性?

时间:2018-10-31 14:17:49

标签: c# list automapper

这是我用于Automapper的两个类

class A {
    Guid id,
    int a,
    int b,
    int c
}

class B {
        Guid id,
        int a,
        int b,
        int c,
        int d

    }

我正在通过映射以上类之一来创建列表 这是代码:

 AList = Mapper.Map<List<B>, List<A>>(item);

但是我面临的问题是属性Guid id在列表中每次都必须是唯一的,即在列表的每个对象中属性Guid.NewGuid()都应该是唯一的。但是,一旦将其自动映射,我应该如何访问它并进行更改。我避免使用foreach,因为这是我选择AutoMapper

的唯一原因

1 个答案:

答案 0 :(得分:1)

听起来您想要的是将A映射到B,但给B一个新的Guid作为id。该代码应该可以工作:

var a = new A() { id = Guid.NewGuid(), a = 1, b = 2, c = 3 };
Mapper.Initialize(cfg => 
    cfg.CreateMap<A, B>()
        .ForMember(d => d.id, o => o.UseValue(Guid.NewGuid()))
);
var b = Mapper.Map<B>(a);

该映射配置告诉AutoMapper每次将b.id映射到A时都为B使用新的Guid。

编辑:如果您在调试器中逐步完成此操作,则会看到两个对象的属性ab和{{ 1}},但c属性的指南不同。