だから私はこれを持っています。
public class Parent
{
public string SomeProperty { get; set; }
public Child ChildProperty { get; set; }
}
public class Child
{
public string ChildProperty { get; set; }
public string OtherChildProperty { get; set; }
}
public class Flat
{
public string SomeProperty { get; set; }
public string ChildProperty { get; set; }
}
そして、私はこれを行います。
Flat source = new Flat { SomeProperty = "test", ChildProperty = "test" };
Parent dest = GetParentFromDataContext();
Mapper.Map<Flat,Parent>(source,dest);
それから私の期待は、dest.ChildProperty.OtherChildProperty
それがデータコンテキストからプルされたときの状態にまだ設定されているということです。しかし、私はこれを行うのに苦労しています。
その場合CreateMap
、「トップレベルのメンバーに解決する必要があります」という例外が発生します。
Mapper.CreateMap<Flat,Parent>()
.ForMember(dest => dest.Parent.ChildProperty.ChildProperty,
options => options.MapFrom(source => source.ChildProperty))
.ForMember(dest => dest.Parent.ChildProperty.OtherChildProperty,
options => options.Ignore());
ただし、次のことを行うと、データコンテキストからプルされたnew Child {}
ものが置き換えられ、基本的にクリアされます。Child
OtherChildProperty
Mapper.CreateMap<Flat,Parent>()
.ForMember(dest => dest.Child
options => options.MapFrom(source => new Child { ChildProperty = source.ChildProperty } ));
これをマップして、無視したい子プロパティを保持するにはどうすればよいですか?