我有这样的代码:
//Fields
Product _prod, _existingProd;
void Test()
{
_prod = MakeAndPopulateSomeRandomProduct();
_existingProd = GetProdFromDb(1);
Mapper.CreateMap()
.AfterMap((s, d) =>
{
Console.WriteLine(d==_existingProd); //Why does this print false?
//Customize other properties on destination object
});
Mapper.Map(_prod, _existingProd);
}
当我致电Test()
时,会打印false
,但我期待true
。在我的场景中,能够通过object
参数访问原始目标AfterMap
非常重要。我只包括用于演示问题的字段,但在我的实际代码中,我没有直接访问它们。在自定义映射时,如何访问传递给Map()
的对象实例?
答案 0 :(得分:1)
以下示例有效。可能你正在使用一些创建新实例的类型转换器...还请提供所有映射配置以更好地理解问题。
[TestFixture]
public class AfterMap_Test
{
//Fields
private Product _prod, _existingProd;
[Test]
public void Test()
{
Mapper.CreateMap<Product, Product>()
.AfterMap((s, d) =>
{
Trace.WriteLine(d == _existingProd); //Why does this print false?
//Customize other properties on destination object
});
_existingProd = new Product {P1 = "Destination"};
_prod = new Product {P1 = "Source"};
Mapper.Map(_prod, _existingProd);
}
}
internal class Product
{
public string P1 { get; set; }
}