Also ich habe eine Schnittstelle, die für DI:AutoMapper Nested Mappings
public interface IMapper<in TIn, out TOut>
{
TOut Map(TIn objectToMap);
}
Und eine Basisklasse für meinen Mapper:
public abstract class MapperBase<TIn, TOut> : IMapper<TIn, TOut>
{
internal IConfigurationProvider MapperConfiguration { get; set; }
public TOut Map(TIn objectToMap)
{
return MapperConfiguration.CreateMapper().Map<TOut>(objectToMap);
}
}
Und ich werde das folgende vereinfachte Datenmodell verwenden (“ same“für DAL und Service-Layer)
public class Client
{
public int Id { get; set; }
public List<Contract> Contracts { get; set; }
}
public class Contract
{
public int Id { get; set; }
public List<Installation> Installations { get; set; }
}
public class Installation
{
public int Id { get; set; }
}
ich folgenden Mapper zwischen meiner DAL und Service-Schicht habe:
Aber wenn ich einen Client abdecke, gibt AutoMapper eine Ausnahme, die besagt, dass für die Installation kein Mapping definiert ist (der verschachtelte Typ).
Wenn ich ein Mapping für die Installation in der Client Mapper konfigurieren, funktioniert es gut.
Was ich nicht verstehe ist, ich biete eine spezifische Methode, um den verschachtelten Typ "Contract" von "Client" abzubilden, und eine spezifische Karte "Installation" von "Contract", also warum versucht Autoadapter zu verwenden seine Mapping-Konfiguration für die verschachtelten Typen der verschachtelten Typen? Warum hält er nicht einfach dort an und benutzt die Methode, die ich zur Verfügung gestellt habe? Wie kann ich erreichen, was ich hier machen will, Mapper verketten?