UseDestinationValue有什么作用?
我问,因为我有一个基类和继承类,对于基类,我很想让AutoMapper为我获取现有值.
它会那样做吗?(我看过并且我可以看到UseDestinationValue涉及列表的唯一示例.它仅用于列表吗?
我可以这样做:
PersonContract personContract = new PersonContract {Name = 'Dan'};
Person person = new Person {Name = "Bob"};
Mapper.CreateMap<PersonContract, Person>()
.ForMember(x=>x.Name, opt=>opt.UseDestinationValue());
person = Mapper.Map<PersonContract, Person>(personContract);
Console.WriteLine(person.Name);
Run Code Online (Sandbox Code Playgroud)
输出是bob?
我写下了整个问题然后想,DUH!运行一下看看。
它如我所希望的那样工作。
这是我最终得到的代码:
class Program
{
static void Main(string[] args)
{
PersonContract personContract = new PersonContract {NickName = "Dan"};
Person person = new Person {Name = "Robert", NickName = "Bob"};
Mapper.CreateMap<PersonContract, Person>()
.ForMember(x => x.Name, opt =>
{
opt.UseDestinationValue();
opt.Ignore();
});
Mapper.AssertConfigurationIsValid();
var personOut =
Mapper.Map<PersonContract, Person>(personContract, person);
Console.WriteLine(person.Name);
Console.WriteLine(person.NickName);
Console.WriteLine(personOut.Name);
Console.WriteLine(personOut.NickName);
Console.ReadLine();
}
}
internal class Person
{
public string Name { get; set; }
public string NickName { get; set; }
}
internal class PersonContract
{
public string NickName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
输出是:
罗伯特
·丹
罗伯特
·丹