自动制版机: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,我试过你的例子,它对我也很有用。我需要找出我的代码似乎不起作用的原因,并将考虑您的建议。