オブジェクトの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
に行を追加する必要がないことです。私は次のようなことができることを望んでいました:A
Destination
CreateMap<Source, Destination>()
.ForMember(dest => dest, opt => opt.MapFrom(src => src.MyA));
しかし、上記を試してみると、マッピングの登録時に実行時エラーが発生します。「メンバーのカスタム構成は、タイプの最上位の個々のメンバーに対してのみサポートされます。」
ありがとう