这是我的问题,在Condition
我想知道正在评估的当前属性的名称。我相信你可以在早期版本的Automapper中做到这一点。有什么建议吗?
[TestFixture]
public class SandBox
{
public class MySource
{
public string Name { get; set; }
public int Count { get; set; }
}
public class MyDestination
{
public string Name { get; set; }
public int Count { get; set; }
}
public class SourceProfile : Profile
{
public SourceProfile()
{
this.CreateMap<MySource, MyDestination>()
.ForAllMembers(x => x.Condition((source, destination, arg3, arg4, resolutionContext) =>
{
// this will run twice (once for every property)
// but how can I find out, what the current property is?
return true;
}));
}
}
public SandBox()
{
Mapper.Initialize(x =>
{
x.AddProfile(new SourceProfile());
});
}
[Test]
public void Run()
{
var s = new MySource { Name = "X", Count = 42 };
var r = Mapper.Map<MyDestination>(s);
Assert.AreEqual(s.Name, r.Name);
}
}
答案 0 :(得分:3)
尝试以下方法:
this.CreateMap<MySource, MyDestination>()
.ForAllMembers(x => x.Condition((source, destination, arg3, arg4, resolutionContext) =>
{
// this will run twice (once for every property)
// but how can I find out, what the current property is?
Debug.WriteLine($"Mapping to {destination.GetType().Name}.{x.DestinationMember.Name}");
return true;
}));