Ich habe ein komplexes Objekt wie:Karten komplexer Typ zu flachen Typ in AutoMapper
public class BusinessUnit
{
public TradingDesk TradingDesk { get; }
public string Division { get; }
public BusinessUnit(string division, TradingDesk tradingDesk)
{
Division = division;
TradingDesk = tradingDesk;
}
}
ich dies den flachen Typen zuordnen möge:
public class Row
{
//TradingDesk properties
public string TraderFirstName { get; set; }
public string TraderLastName { get; set; }
public string TradingDeskName { get; set; }
public string Division { get; set; }
}
ich bereits AutoMapper
für TradingDesk
konfiguriert haben:
CreateMap<TradingDesk, Row>().ForMember(vm => vm.TradingDeskName, op => op.MapFrom(src => src.Name));
so wird der folgende Test vorbei:
[Test]
public void Should_Map_TradingDesk_To_Row()
{
var tradingDesk = Fixture.Create<TradingDesk>();
var mapped = AutoMapper.Map<Row>(tradingDesk);
mapped.TradingDeskName.Should()
.Be(tradingDesk.Name);
mapped.TraderFirstName.Should()
.Be(tradingDesk.Trader.FirstName);
mapped.TraderLastName.Should()
.Be(tradingDesk.Trader.LastName);
}
Aber wenn ich versuche zu kartieren BusinessUnit
- Ich habe AutoMapper
für TradingDesk
als solche neu zu konfigurieren:
CreateMap<BusinessUnit, Row>()
.ForMember(vm => vm.TradingDeskName, op => op.MapFrom(src => src.TradingDesk.Name))
.ForMember(vm => vm.TraderFirstName, op => op.MapFrom(src => src.TradingDesk.Trader.FirstName))
.ForMember(vm => vm.TraderLastName, op => op.MapFrom(src => src.TradingDesk.Trader.LastName));
Ich erwarte, dass AutoMapper
& Zieltyp-Mapping die bereits konfigurierten Quelle verwenden sollte, wenn es braucht um TradingDesk
zu zu kartieren, während BusinessUnit
kartiert wird. Auf diese Weise kann ich die Konfiguration vom kleinsten zum größten Typ erstellen, während ein komplexes Objekt abgeflacht wird, ohne dass die Zuordnung für jedes einzelne Element im abgeflachten Typ definiert werden muss.
Aber ich habe keine 'IMapper'-Instanz, die aus der Konfiguration dort erstellt wird; Ihr Code explodiert also mit 'AutoMapperMappingException' – aateeque
Wenn Sie [diesen Beitrag] (http://stackoverflow.com/a/9404417/1558010) betrachten, sind Ihre Optionen möglicherweise eingeschränkt, wenn Sie sich nicht auf den statischen Mapper verlassen –