1

次のようなソース モデルがあります。

public class FooBar {
    public Foo foo {get;set;}
    public Bar bar {get;set;|
}

public class Foo {
    // tons of properties
}

public class Bar {
    // tons of irrelevant properties
    public Baz baz {get;set;}
}

次に、FooBar を NewFooBar にフラット化する宛先モデルがあり、次のようになります。

public class NewFooBar {
    // all properties from Foo
    public Baz baz {get;set;}
}

foo のすべてのプロパティを個別にマップすることなく、FooBar を NewFooBar にマップするにはどうすればよいですか? (それらの多くがあります)。

私の最初の解決策は、Foo と Bar を別々に NewFooBar にマップすることでした。次に、マップを個別に実行します。しかし、これは厄介なようです。可能であれば、単一のマッピングでそれを行いたいと思います。これを行う簡単な方法がありませんか?

4

1 に答える 1

1

これは機能しますか?

Mapper.CreateMap<Foo, NewFooBar>()
            .ForMember(dest => dest.baz, opt => opt.Ignore())
            ;

Mapper.CreateMap<FooBar, NewFooBar>()
    .ConvertUsing(src => {
        var newFooBar = AutoMapper.Mapper.Map<Foo, NewFooBar>(src.foo);

        newFooBar.baz = src.bar.baz;

        return newFooBar;
    });
    ;

その後

var newFooBar = AutoMapper.Mapper.Map<FooBar, NewFooBar>(fooBar);
于 2012-04-09T23:49:42.840 に答える