Ohjelmointi

Kuinka työskennellä AutoMapperin kanssa C #: ssä

AutoMapper on suosittu objektien välinen kartoituskirjasto, jota voidaan käyttää erilaisten tyyppien kohteiden kartoittamiseen. Esimerkiksi sinun on ehkä kartoitettava sovelluksesi DTO: t (tiedonsiirtoobjektit) malliobjekteihin. AutoMapper säästää työlästä vaivaa, kun joudut kartoittamaan manuaalisesti yhden tai useamman tällaisen yhteensopimattoman tyypin ominaisuuden.

Aloita työskentely AutoMapperin kanssa luomalla projekti Visual Studiossa ja asentamalla sitten AutoMapper. Voit asentaa AutoMapperin NuGetistä käyttämällä seuraavaa komentoa NuGet Package Manager Console -ikkunassa:

PM> Install-Package AutoMapper

Luo kartoituksia käyttämällä AutoMapperia

Objekti-objekti-kartoitin, kuten AutoMapper, muuntaa yhden tyyppisen syöttöobjektin toisen tyyppiseksi lähtöobjektiksi. Harkitse seuraavia kahta luokkaa.

 julkisen luokan kirjoittajamalli

    {

public int Id

        {

saada; aseta;

        }

julkinen merkkijono Etunimi

        {

Valmistaudu;

        }

julkinen merkkijono Sukunimi

        {

saada; aseta;

        }

julkinen merkkijono Osoite

        {

saada; aseta;

        }

    }

julkisen luokan kirjoittajaDTO

    {

public int Id

        {

saada; aseta;

        }

julkinen merkkijono Etunimi

        {

saada; aseta;

        }

julkinen merkkijono Sukunimi

        {

saada; aseta;

        }

julkinen merkkijono Osoite

        {

saada; aseta;

        }

    }

Seuraava koodinpätkä osoittaa, kuinka voit luoda kartan näiden kahden tyypin, AuthorModel ja AuthorDTO, välillä.

var config = uusi MapperConfiguration (cfg => {

cfg.CreateMap ();

            });

Tyyppien välisen kartoituksen suorittaminen on sitten niin yksinkertaista kuin seuraava koodikappale osoittaa.

IMapper iMapper = config.CreateMapper ();

var lähde = new AuthorModel ();

var määränpää = iMapper.Map (lähde);

Esimerkki AutoMapperista

Työskentelemme nyt joidenkin tietojen kanssa. Katso seuraava koodikappale, joka tallentaa tietoja lähdeobjektiin ja näyttää sitten kohdeobjektissa olevat ominaisuusarvot kartoituksen jälkeen.

var config = uusi MapperConfiguration (cfg => {

cfg.CreateMap ();

            });

IMapper iMapper = config.CreateMapper ();

var lähde = new AuthorModel ();

lähde.Id = 1;

source.FirstName = "Joydip";

source.LastName = "Kanjilal";

source.Address = "Intia";

var määränpää = iMapper.Map (lähde);

Console.WriteLine ("Kirjoittajan nimi:" + määränpää.Etänimi + "" + määränpää.Sukunimi);

Kun suoritat yllä olevan koodinpätkän, kohdeobjektiin tallennettu tekijän nimi näytetään. Kohteen FirstName ja kohde LastName ominaisuuksien arvot ovat kuitenkin samat kuin lähdeobjektin, koska olet kartoittanut objektit onnistuneesti AutoMapperilla!

Huomaa, että AutoMapper pystyy kartoittamaan minkä tahansa luokan. AutoMapper noudattaa kuitenkin tiettyjä käytäntöjä, joista yksi on, että yhdistettävillä ominaisuuksien nimillä tulisi olla samat nimet. Jos ominaisuuksien nimet eivät ole samat, sinun on kerrottava AutoMapperille, miten ominaisuudet tulisi kartoittaa. Olettaen, että haluamme kartoittaa kaksi ominaisuutta Contact ja ContactDetails, seuraava esimerkki kuvaa, miten tämä voidaan saavuttaa.

var config = uusi MapperConfiguration (cfg => {

cfg.CreateMap ()

.ForMember (määränpää => määränpää.Kontaktitiedot,

valitsee => valitsee.MapFrom (lähde => lähde.Yhteystiedot));

            });

Huomaa seuraava käsky, jota käytetään kohdeobjektin luomiseen.

var määränpää = iMapper.Map (lähde);

Jos kohdeobjekti on jo olemassa, voit käyttää sen sijaan alla olevaa lausetta.

iMapper.Map (lähdeObject, määränpääObject);

Pohjimmiltaan yllä olevaa koodinpätkää voidaan käyttää kahden jo olemassa olevan objektin kartoittamiseen.

Projektioiden käyttäminen AutoMapperissa

AutoMapper tarjoaa erinomaisen tuen projektioille. Projektioita käytetään lähdearvojen kartoittamiseen määränpäähän, joka ei vastaa lähteen rakennetta. (Sitä vastoin edellä keskusteltu kartoitus oli yksi yhteen -kartoitus.)

Katsotaan nyt projektiota. Harkitse esimerkiksi seuraavaa luokkaa.

 julkisen luokan osoite

    {

julkinen merkkijono Kaupunki {get; aseta; }

julkinen merkkijono Tila {get; aseta; }

julkinen merkkijono Maa {get; aseta; }

    }

Annetaan AuthorModel-luokan käyttää Osoiteluokkaa kirjoittajien osoitetietojen tallentamiseen. Tältä näyttää päivitetty AuthorModel-luokka.

 julkisen luokan kirjoittajamalli

    {

public int Id

        {

saada; aseta;

        }

julkinen merkkijono Etunimi

        {

Valmistaudu;

        }

julkinen merkkijono Sukunimi

        {

saada; aseta;

        }

julkinen osoiteosoite

        {

saada; aseta;

        }

    }

Ja tässä on päivitetty AuthorDTO-luokka.

julkisen luokan kirjoittajaDTO

    {

public int Id

        {

saada; aseta;

        }

julkinen merkkijono Etunimi

        {

saada; aseta;

        }

julkinen merkkijono Sukunimi

        {

saada; aseta;

        }

julkinen merkkijono Kaupunki {get; aseta; }

julkinen merkkijono Tila {get; aseta; }

julkinen merkkijono Maa {get; aseta; }

    }

Oletetaan, että meidän on kartoitettava AuthorDTO- ja AuthorModel-luokat. Seuraava koodinpätkä kuvaa, miten tämä voidaan saavuttaa.

var config = uusi MapperConfiguration (cfg => {

cfg.CreateMap ()

.ForMember (määränpää => kohde. Osoite,

map => map.MapFrom (

lähde => uusi osoite

                  {

Kaupunki = lähde. Kaupunki,

Tila = lähde. Valtio,

Maa = lähde Maa

                  }));

Aion keskustella AutoMapperin edistyneemmistä ominaisuuksista tulevassa viestissä täällä. Siihen asti voit oppia lisää AutoMapperista tältä linkiltä.

Kuinka tehdä enemmän C #: ssä:

  • Milloin abstraktia luokkaa vs. käyttöliittymää käytetään C #: ssä
  • Kuinka työskennellä AutoMapperin kanssa C #: ssä
  • Kuinka käyttää lambda-lausekkeita C #: ssä
  • Kuinka toimia Action-, Func- ja Predicate-edustajien kanssa C #: ssä
  • Kuinka työskennellä C #: n edustajien kanssa
  • Kuinka toteuttaa yksinkertainen kirjaaja C #: ssä
  • Kuinka työskennellä attribuuttien kanssa C #: ssä
  • Kuinka työskennellä log4netin kanssa C #: ssä
  • Kuinka toteuttaa arkiston suunnittelumalli C #: ssä
  • Kuinka työskennellä heijastuksen kanssa C #: ssä
  • Kuinka työskennellä tiedostojärjestelmän katselijan kanssa C #: ssä
  • Kuinka tehdä laiska alustus C #: ssä
  • Kuinka työskennellä MSMQ: n kanssa C #: ssä
  • Kuinka työskennellä laajennusmenetelmien kanssa C #: ssä
  • Kuinka meille lambda-lausekkeet C #: ssä
  • Milloin haihtuvaa avainsanaa käytetään C #: ssä
  • Tuottoavainsanan käyttäminen C #: ssä
  • Kuinka toteuttaa polymorfismi C #: ssa
  • Kuinka rakentaa oma tehtävän ajastin C #
  • Kuinka työskennellä RabbitMQ: n kanssa C #: ssä
  • Kuinka työskennellä C #: n kanssa
  • Virtuaalisten ja abstraktien menetelmien tutkiminen C #: ssä
$config[zx-auto] not found$config[zx-overlay] not found