Automapper (5.1.1) ForAllMembers - 获取当前 属性 的名称
Automapper (5.1.1) ForAllMembers - Get name of the current property
这是我的问题,在 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);
}
}
尝试以下操作:
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;
}));
这是我的问题,在 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);
}
}
尝试以下操作:
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;
}));