自动制版机:Can';t从AfterMap()中访问传递给Map()的原始对象实例

自动制版机:Can';t从AfterMap()中访问传递给Map()的原始对象实例,map,automapper,Map,Automapper,我有这样的代码: //Fields Product _prod, _existingProd; void Test() { _prod = MakeAndPopulateSomeRandomProduct(); _existingProd = GetProdFromDb(1); Mapper.CreateMap() .AfterMap((s, d) => {

我有这样的代码:

    //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
。在我的场景中,能够通过
AfterMap
参数访问原始目的地
对象
非常重要。我只包含了用于演示问题的字段,但在我的实际代码中,我没有直接访问它们的权限。自定义映射时,如何访问传递到
Map()
的对象实例?

以下示例有效。可能您正在使用某种类型转换器来创建新实例。。。另外,请提供所有映射配置,以便更好地理解问题

[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; }
}
[TestFixture]
公共课后测图
{
//田地
私人产品,现有产品;
[测试]
公开无效测试()
{
Mapper.CreateMap()
.AfterMap((s,d)=>
{
Trace.WriteLine(d==\u existingProd);//为什么打印为false?
//自定义目标对象上的其他属性
});
_existingProd=新产品{P1=“目的地”};
_prod=新产品{P1=“Source”};
Map(_prod,_existingProd);
}
}
内类积
{
公共字符串P1{get;set;}
}

谢谢你,k0stya,我试过你的例子,它对我也很有用。我需要找出我的代码似乎不起作用的原因,并将考虑您的建议。