Mapper.Map(source, dest)
実際には宛先オブジェクトを返します。あなたの場合は になりますpersonMissingStuff
。
そうは言っても、宛先の null プロパティのみを入力する場合は、マッピングを適切に構成する必要があり、宛先プロパティに値がある場合はマップしないでください。
次のサンプルは、クラス プロパティに対してまさにこれを行います。値のプロパティについては、おそらく追加の構成を行う必要があります。この例では、NUnit と SharpTestsEx を使用しています。
[TestFixture]
public class LoadIntoInstance
{
public class Template
{
public string Name { get; set; }
}
public class Person
{
public string Name { get; set; }
public string OtherData { get; set; }
}
[Test]
public void Should_load_into_instance()
{
Mapper.CreateMap<Template, Person>()
.ForMember(d=>d.OtherData, opt=>opt.Ignore());
Mapper.CreateMap<Person, Person>()
.ForAllMembers(opt=>opt.Condition(ctx=>ctx.DestinationValue==null));
Mapper.AssertConfigurationIsValid();
var template = new Template {Name = "template"};
var basePerson = Mapper.Map<Person>(template);
var noNamePerson = new Person {OtherData = "other"};
var result = Mapper.Map(basePerson, noNamePerson);
result.Should().Be.SameInstanceAs(noNamePerson);
result.Satisfy(r =>
r.Name == "template" &&
r.OtherData == "other");
}
}