Programmēšana

Kā strādāt ar AutoMapper C #

AutoMapper ir populāra objektu-objektu kartēšanas bibliotēka, kuru var izmantot, lai kartētu objektus, kas pieder atšķirīgiem tipiem. Piemēram, jums, iespējams, būs jāpiesaista lietojumprogrammas DTO (datu pārsūtīšanas objekti) modeļa objektiem. AutoMapper ļauj jums nogurdināt to, ka jums ir manuāli jāpiezīmē viena vai vairākas šādu nesaderīgu veidu īpašības.

Lai sāktu strādāt ar AutoMapper, Visual Studio jāizveido projekts un pēc tam jāinstalē AutoMapper. AutoMapper var instalēt no NuGet, izmantojot šādu komandu logā NuGet Package Manager Console:

PM> Install-Package AutoMapper

Izveidojiet kartējumus, izmantojot funkciju AutoMapper

Objekta-objekta kartētājs, piemēram, AutoMapper, viena veida ievades objektu pārveido par cita veida izvades objektu. Apsveriet šādas divas klases.

 publiskās klases Autors Modelis

    {

public int Id

        {

gūt; komplekts;

        }

publiskā virkne Vārds

        {

sagatavojies;

        }

publiskā virkne Uzvārds

        {

gūt; komplekts;

        }

publiskā virkne Adrese

        {

gūt; komplekts;

        }

    }

sabiedrības klase AutorsDTO

    {

public int Id

        {

gūt; komplekts;

        }

publiskā virkne Vārds

        {

gūt; komplekts;

        }

publiskā virkne Uzvārds

        {

gūt; komplekts;

        }

publiskā virkne Adrese

        {

gūt; komplekts;

        }

    }

Šis koda fragments parāda, kā jūs varat izveidot karti starp šiem diviem veidiem - AuthorModel un AuthorDTO.

var config = new MapperConfiguration (cfg => {

cfg.CreateMap ();

            });

Pēc tam kartēšana starp tipiem ir tikpat vienkārša, kā parādīts nākamajā koda fragmentā.

IMapper iMapper = config.CreateMapper ();

var avots = new AuthorModel ();

var galamērķis = iMapper.Map (avots);

AutoMapper piemērs

Tagad strādāsim ar dažiem datiem. Skatiet šo koda fragmentu, kurā daži dati tiek glabāti avota objektā un pēc kartēšanas pabeigšanas objekta vērtības tiek rādītas mērķa objektā.

var config = new MapperConfiguration (cfg => {

cfg.CreateMap ();

            });

IMapper iMapper = config.CreateMapper ();

var avots = new AuthorModel ();

avots.Id = 1;

source.FirstName = "Joydip";

source.LastName = "Kanjilal";

avots. Adrese = "Indija";

var galamērķis = iMapper.Map (avots);

Console.WriteLine ("Autora nosaukums:" + galamērķis.Vārda Vārds + "" + mērķis.LastName);

Izpildot iepriekš minēto koda daļu, tiks parādīts autora vārds, kas saglabāts mērķa objektā. Tomēr mērķa FirstName un mērķa LastName rekvizītu vērtības būs vienādas ar avota objektu, jo jūs esat veiksmīgi kartējis objektus, izmantojot AutoMapper!

Ņemiet vērā, ka programma AutoMapper var kartēt jebkuru klašu kopu. Tomēr AutoMapper ievēro noteiktas konvencijas, no kurām viena ir tāda, ka kartējamajiem īpašību nosaukumiem jābūt identiskiem nosaukumiem. Ja rekvizītu nosaukumi nav identiski, jums jāinformē AutoMapper par to, kā rekvizīti būtu jāpiesaista. Pieņemot, ka mēs vēlamies kartēt abas īpašības Contact un ContactDetails, šis piemērs parāda, kā to var sasniegt.

var config = new MapperConfiguration (cfg => {

cfg.CreateMap ()

.ForMember (galamērķis => galamērķis. Kontaktinformācija,

izvēlas => izvēlas.MapFrom (avots => avots.Sazināties));

            });

Ievērojiet šo paziņojumu, kas tiek izmantots, lai izveidotu mērķa objektu.

var galamērķis = iMapper.Map (avots);

Ja galamērķa objekts jau pastāv, tā vietā varat izmantot tālāk sniegto paziņojumu.

iMapper.Map (sourceObject, destinationObject);

Būtībā iepriekš minēto koda fragmentu var izmantot divu jau esošu objektu kartēšanai.

Izmantojot projekcijas programmā AutoMapper

AutoMapper nodrošina lielisku atbalstu projekcijām. Projekcijas tiek izmantotas, lai piesaistītu avota vērtības galamērķim, kas neatbilst avota struktūrai. (Turpretī kartēšana, par kuru mēs runājām iepriekš, bija kartēšana viens pret vienu.)

Tagad aplūkosim projekciju. Piemēram, apsveriet šādu klasi.

 publiskā klase Adrese

    {

publiskā virkne Pilsēta {get; komplekts; }

public string State {get; komplekts; }

publiskā virkne Valsts {get; komplekts; }

    }

Ļaujiet mūsu autoru modeļa klasei izmantot adresi Adrese, lai saglabātu autoru informāciju par adresēm. Lūk, kā izskatītos atjauninātā AuthorModel klase.

 publiskās klases Autors Modelis

    {

public int Id

        {

gūt; komplekts;

        }

publiskā virkne Vārds

        {

sagatavojies;

        }

publiskā virkne Uzvārds

        {

gūt; komplekts;

        }

publiskās adreses adrese

        {

gūt; komplekts;

        }

    }

Un šeit ir atjauninātā AuthorDTO klase.

sabiedrības klase AutorsDTO

    {

public int Id

        {

gūt; komplekts;

        }

publiskā virkne Vārds

        {

gūt; komplekts;

        }

publiskā virkne Uzvārds

        {

gūt; komplekts;

        }

publiskā virkne Pilsēta {get; komplekts; }

public string State {get; komplekts; }

publiskā virkne Valsts {get; komplekts; }

    }

Tagad pieņemsim, ka mums ir jākartē AuthorDTO un AuthorModel klases. Šis koda fragments parāda, kā to var panākt.

var config = new MapperConfiguration (cfg => {

cfg.CreateMap ()

.ForMember (galamērķis => galamērķis. Adrese,

karte => karte. Karte no (

avots => jauna adrese

                  {

Pilsēta = avots. Pilsēta,

Valsts = avots. Valsts,

Valsts = avots. Valsts

                  }));

Es apspriedīšu vairāk uzlabotās AutoMapper iespējas nākamajā šeit. Līdz tam šajā saitē varat uzzināt vairāk par programmu AutoMapper.

Kā izdarīt vairāk C #:

  • Kad izmantot abstraktu klasi un saskarni C #
  • Kā strādāt ar AutoMapper C #
  • Kā lietot lambda izteicienus C #
  • Kā strādāt ar Action, Func un Predicate delegātiem C #
  • Kā strādāt ar delegātiem C #
  • Kā ieviest vienkāršu reģistrētāju C #
  • Kā strādāt ar atribūtiem C #
  • Kā strādāt ar log4net C #
  • Kā ieviest krātuves dizaina modeli C #
  • Kā strādāt ar refleksiju C #
  • Kā strādāt ar filesystemwatcher C #
  • Kā veikt slinku inicializāciju C #
  • Kā strādāt ar MSMQ C #
  • Kā strādāt ar paplašināšanas metodēm C #
  • Kā mums izteikt lambda izteicienus C #
  • Kad lietot svārstīgo atslēgvārdu C #
  • Kā izmantot ienesīguma atslēgvārdu C #
  • Kā ieviest polimorfismu C #
  • Kā izveidot savu uzdevumu plānotāju C #
  • Kā strādāt ar RabbitMQ C #
  • Kā strādāt ar dubultošanos C #
  • Virtuālu un abstraktu metožu izpēte C #
$config[zx-auto] not found$config[zx-overlay] not found