Skip to main content

Mappers

I mapper sono delle classi utility che mappano un oggetto di un tipo in un oggetto di tipo diverso, vengono usati in Hydra per mappare:

  • Oggetti richiesta in oggetti di dominio (e.g. InsertUpdateSiteRequest -> Site)
  • Oggetti di dominio in oggetti risposta (e.g. Site -> SiteResponse)

I mapper (solitamente quelli dominio -> risposta) possono implementare logica aggiuntiva ed eseguire anche query verso il database, ad esempio per ottenere gli ancestors di una pagina, non presenti nell'oggetto di dominio Page, ma richiesti da PageResponse.

Aggiungere un nuovo Mapper

Aggiungere una classe sotto Application/Mapping con il nome nella forma: {ClasseSorgente}To{ClasseDestinazione}Mapper.

public class FooToBarMapper {
//QUesto metodo mappa le proprietà dalla sorgente su un nuovo oggetto
public override async Task<Bar> Map(Foo source) {...};
}

Se il formato del nome e il namespace sono rispettati, la classe sarà automaticamente registrata come un servizio scoped (una nuova istanza per richiesta) in ASP.NET.

Ora il mapper può essere iniettato in una classe ed utilizzato:

public class Abc {
private readonly FooToBarMapper _mapper;

public Abc(FooToBarMapper mapper){
_mapper = mapper;
}

public async Task<Bar> FooToBar(Foo foo) {
Bar bar = await _mapper.Map(foo);

return bar;
}
}

I mapper sono comunemente usati dai query handlers