Ohjelmointi

Tietomerkintöjen käyttäminen C #: ssä

Tietomerkinnät (saatavana osana järjestelmää. ComponentModel. DataAnnotations nimiavaruus) ovat määritteitä, joita voidaan käyttää luokkiin tai luokan jäseniin määrittämään luokkien välinen suhde, kuvaamaan, miten tiedot näytetään käyttöliittymässä, ja määrittämään validointisäännöt. Tässä artikkelissa kerrotaan merkinnöistä, miksi ne ovat hyödyllisiä ja kuinka niitä käytetään .NET Core -sovelluksissamme.

Jotta voit työskennellä tässä artikkelissa annettujen koodiesimerkkien kanssa, järjestelmässäsi on oltava asennettuna Visual Studio 2019. Jos sinulla ei vielä ole kopiota, voit ladata Visual Studio 2019 täältä.

Luo konsolisovellusprojekti Visual Studio 2019: ssä

Luo ensin .NET Core Console -sovellusprojekti Visual Studiossa. Olettaen, että Visual Studio 2019 on asennettu järjestelmään, luo uusi .NET Core Console -sovellusprojekti Visual Studiossa noudattamalla alla olevia ohjeita.

  1. Käynnistä Visual Studio IDE.
  2. Napsauta Luo uusi projekti.
  3. Valitse Luo uusi projekti -ikkunassa ”Console App (.NET Core)” näytetystä malliluettelosta.
  4. Napsauta Seuraava.
  5. Määritä seuraavan projektin nimi ja sijainti uuden Konfiguroi uusi projekti -ikkunassa.
  6. Napsauta Luo.

Tämä luo uuden .NET Core -konsolisovellushankkeen Visual Studio 2019: ssä. Tätä projektia käytetään tämän artikkelin seuraavissa osioissa olevien tietojen merkintöjen kanssa.

Sisällytä järjestelmä. Komponenttimalli. DataAnnotations-nimitila

Jotta voit työskennellä tässä artikkelissa annettujen koodinäytteiden kanssa, sinun on sisällytettävä järjestelmä. Komponenttimalli. DataAnnotations-nimitila ohjelmassasi.

Huomaa, että määritteillä määritetään metatiedot luokalle tai ominaisuudelle. Tietomerkintämääritteet voidaan yleisesti luokitella seuraaviin:

  • Validation attribute - Käytetään pakottamaan entiteettien ominaisuuksien validointisäännöt
  • Näyttöattribuutti - Määritetään, miten tiedot tulisi näyttää käyttöliittymässä
  • Mallinnusattribuutti - Käytetään luokkien välisen suhteen määrittämiseen

Tietomerkinnät attribuuttiluokissa C #

System.ComponentModel.Annotations-nimiavaruus käsittää useita attribuuttiluokkia, joita voidaan käyttää metatietojen määrittämiseen entiteettiluokillesi tai dataohjaimille. Yleisimmin käytettyjä määritteitä ovat seuraavat:

  • Samanaikainen tarkistus
  • Avain
  • Maksimi pituus
  • Edellytetään
  • StringLength
  • Aikaleima

Esimerkki tietomerkinnöistä C #: ssä

Luo seuraava luokka Author.cs-nimisessä tiedostossa aiemmin luomassamme konsolisovelluksessa.

public class Kirjoittaja

    {

[Pakollinen (ErrorMessage = "{0} vaaditaan")]

[StringLength (50, Minimipituus = 3,

ErrorMessage = "Etunimen tulee olla vähintään 3 merkkiä ja enintään 50 merkkiä")]

[DataType (DataType.Text)]

julkinen merkkijono Etunimi {get; aseta; }

[Pakollinen (ErrorMessage = "{0} vaaditaan")]

[StringLength (50, Minimipituus = 3,

ErrorMessage = "Sukunimen tulee olla vähintään 3 merkkiä ja enintään 50 merkkiä")]

[DataType (DataType.Text)]

julkinen merkkijono Sukunimi {get; aseta; }

[DataType (DataType.PhoneNumber)]

[Puhelin]

julkinen merkkijono Puhelinnumero {get; aseta; }

[DataType (DataType.EmailAddress)]

[Sähköpostiosoite]

julkinen merkkijono Sähköposti {get; aseta; }

    }

Seuraava koodinpätkä kuvaa, kuinka voit luoda Author-luokan ilmentymän ja määrittää arvoja sen ominaisuuksille.

Kirjoittaja kirjoittaja = uusi kirjoittaja ();

author.FirstName = "Joydip";

kirjoittaja.Sukunimi = "";

author.PhoneNumber = "1234567890";

author.Email = "[email protected]";

Voit kirjoittaa mallin vahvistamiseksi seuraavan koodinpätkän Program.cs-tiedoston päämenetelmään.

ValidationContext context = uusi ValidationContext (tekijä, null, null);

List validationResults = uusi List ();

bool valid = Validator.TryValidateObject (tekijä, konteksti, validationResults, true);

jos (! voimassa)

{

foreach (ValidationResult validationResult in validationResults)

  {

Console.WriteLine ("{0}", validationResult.ErrorMessage);

  }

}

ValidationContext on luokka, joka tarjoaa kontekstin, jossa vahvistus on tehtävä. Validator-luokan staattinen TryValidateObject-menetelmä palauttaa arvon true, jos vahvistus onnistuu, muuten väärä. Se palauttaa myös luettelon ValidationResults, joka sisältää kaikki mallissa epäonnistuneet validoinnit. Lopuksi olemme käyttäneet foreach-silmukkaa ValidationResults-luettelon toistamiseen ja virheilmoitusten näyttämiseen konsoli-ikkunassa.

Täydellinen koodiluettelo on annettu alla viitteellesi.

public class Kirjoittaja

    {

[Pakollinen (ErrorMessage = "{0} vaaditaan")]

[StringLength (50, Minimipituus = 3,

ErrorMessage = "Etunimen tulee olla vähintään 3 merkkiä ja enintään 50 merkkiä")]

[DataType (DataType.Text)]

julkinen merkkijono Etunimi {get; aseta; }

[Pakollinen (ErrorMessage = "{0} vaaditaan")]

[StringLength (50, Minimipituus = 3,

ErrorMessage = "Sukunimen tulee olla vähintään 3 merkkiä ja enintään 50 merkkiä")]

[DataType (DataType.Text)]

julkinen merkkijono Sukunimi {get; aseta; }

[DataType (DataType.PhoneNumber)]

[Puhelin]

julkinen merkkijono Puhelinnumero {get; aseta; }

[DataType (DataType.EmailAddress)]

[Sähköpostiosoite]

julkinen merkkijono Sähköposti {get; aseta; }

    }

luokan ohjelma

    {      

staattinen void Main (merkkijono [] args)

        {

Kirjoittaja kirjoittaja = uusi kirjoittaja ();

author.FirstName = "Joydip";

kirjoittaja.Sukunimi = ""; // Ei syötetty arvoa

author.PhoneNumber = "1234567890";

author.Email = "[email protected]";

ValidationContext context = uusi ValidationContext

(tekijä, nolla, nolla);

Luettelon validationResults = uusi

Lista();

bool valid = Validator.TryValidateObject

(tekijä, asiayhteys, validationResults, true);

jos (! voimassa)

            {

foreach (ValidationResult validationResult in

validointitulokset)

                {

Console.WriteLine ("{0}",

validationResult.ErrorMessage);

                }

            }

Console.ReadKey ();

        }

    }

Kun suoritat ohjelmaa, sinun pitäisi nähdä seuraava virheilmoitus konsoli-ikkunassa:

Sukunimi vaaditaan

Luo mukautettu vahvistusmäärite C #

Voit luoda mukautetun vahvistusmääriteluokan laajentamalla ValidationAttribute-perusluokkaa ja ohittamalla IsValid-menetelmän alla olevan koodinpätkän mukaisesti.

[AttributeUsage (AttributeTargets.Property, AllowMultiple = false, Peritty = false)]

public class IsEmptyAttribute: ValidationAttribute

 {

public override bool IsValid (objektiarvo)

     {

var inputValue = arvo merkkijonona;

return! string.IsNullOrEmpty (inputValue);

     }

 }

Seuraava koodinpätkä kuvaa, kuinka voit käyttää mukautettua määritettä Koristella Kirjoittaja-luokan Etunimi ja Sukunimi -ominaisuuksia.

[IsEmpty (ErrorMessage = "Ei saa olla tyhjä tai tyhjä.")]

julkinen merkkijono Etunimi {get; aseta; }

[IsEmpty (ErrorMessage = "Ei saa olla tyhjä tai tyhjä.")]

julkinen merkkijono Sukunimi {get; aseta; }

Tietomerkinnät otettiin alun perin käyttöön .NET 3.5 -järjestelmässä osana järjestelmää. Komponenttimalli. DataAnnotations-nimitila. Siitä lähtien niistä on tullut laajalti käytetty ominaisuus .NET-verkossa. Voit hyödyntää tietomerkintöjä määrittelemään tietojen vahvistussäännöt yhteen paikkaan ja välttää samalla kirjoittamasta samaa vahvistuskoodia uudestaan ​​ja uudestaan.

Tulevassa tässä kirjoituksessa tarkastellaan, kuinka tietojen merkintöjä voidaan käyttää ASP.NET Core MVC -sovelluksissa mallintarkistuksen suorittamiseen.

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