オブジェクトの2つのリスト間でマップしようとしています。ソースタイプには、タイプの複雑なプロパティがありAます。デスティネーションタイプは、タイプのフラット化されたサブセットとA、ソースタイプにある追加のスカラープロパティです。
public class A
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Source
{
public A MyA { get; set; }
public int SomeOtherValue { get; set; }
}
public class Destination
{
public string Name { get; set; }
public int SomeOtherValue { get; set; }
}
Source.MyA.Nameはっきりしない場合は、にマップして、にマップしDestination.NameたいSource.SomeOtherValueと思いDestination.SomeOtherValueます。
実際には、typeAには12ほどのプロパティがあり、その約80%が。の同じ名前のプロパティにマップされますDestination。CreateMap次のようにマッピングを明示的に記述すれば、物事を機能させることができます。
CreateMap<Source, Destination>()
.ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.MyA.Name));
ここでの欠点は、にコピーする必要があるの各プロパティForMemberに行を追加する必要がないことです。私は次のようなことができることを望んでいました:ADestination
CreateMap<Source, Destination>()
.ForMember(dest => dest, opt => opt.MapFrom(src => src.MyA));
しかし、上記を試してみると、マッピングの登録時に実行時エラーが発生します。「メンバーのカスタム構成は、タイプの最上位の個々のメンバーに対してのみサポートされます。」
ありがとう