Programavimas

Kaip naudoti duomenų komentarus C #

Duomenų anotacijos (pasiekiamos kaip sistemos dalis. ComponentModel. DataAnnotations vardų sritis) yra atributai, kuriuos galima pritaikyti klasėms ar klasės nariams, norint nurodyti santykį tarp klasių, apibūdinti, kaip duomenys turi būti rodomi vartotojo sąsajoje, ir nurodyti patvirtinimo taisykles. Šiame straipsnyje kalbama apie duomenų anotacijas, kodėl jie yra naudingi ir kaip juos naudoti mūsų .NET Core programose.

Norėdami dirbti su šiame straipsnyje pateiktais kodų pavyzdžiais, sistemoje turite būti įdiegę „Visual Studio 2019“. Jei dar neturite kopijos, galite atsisiųsti „Visual Studio 2019“ čia.

„Visual Studio 2019“ sukurkite konsolės programos projektą

Pirmiausia sukurkime .NET Core Console Application projektą „Visual Studio“. Darant prielaidą, kad „Visual Studio 2019“ yra įdiegta jūsų sistemoje, atlikite toliau nurodytus veiksmus, kad sukurtumėte naują „.NET Core Console“ programos projektą „Visual Studio“.

  1. Paleiskite „Visual Studio IDE“.
  2. Spustelėkite „Sukurti naują projektą“.
  3. Lange „Kurti naują projektą“ iš rodomų šablonų sąrašo pasirinkite „Console App (.NET Core)“.
  4. Spustelėkite Pirmyn.
  5. Tada rodomame lange „Konfigūruoti naują projektą“ nurodykite naujo projekto pavadinimą ir vietą.
  6. Spustelėkite Sukurti.

Tai sukurs naują .NET Core konsolės programos projektą „Visual Studio 2019“. Šį projektą naudosime dirbdami su duomenų anotacijomis tolesniuose šio straipsnio skyriuose.

Įtraukite sistemą. „ComponentModel“. „DataAnnotations“ vardų sritis

Norėdami dirbti su šiame straipsnyje pateiktais kodų pavyzdžiais, turėtumėte įtraukti sistemą. „ComponentModel“. „DataAnnotations“ vardų sritis jūsų programoje.

Atminkite, kad atributai naudojami nurodant klasės ar ypatybės metaduomenis. Duomenų komentarų atributus iš esmės galima suskirstyti į šiuos:

  • Patvirtinimo atributas - naudojamas tvirtinti subjektų ypatybių taisykles
  • Rodyti atributą - naudojamas nurodyti, kaip duomenys turėtų būti rodomi vartotojo sąsajoje
  • Modeliavimo atributas - naudojamas nurodyti santykį, egzistuojantį tarp klasių

Duomenų komentarų atributų klasės C #

„System.ComponentModel.Annotations“ vardų sritį sudaro kelios atributų klasės, kurios gali būti naudojamos apibrėžiant jūsų objekto klasių ar duomenų valdiklių metaduomenis. Dažniausiai naudojami šie atributai:

  • „ConcurrencyCheck“
  • Raktas
  • Didžiausias ilgis
  • Būtina
  • StringLength
  • Laiko žymė

Duomenų komentarų pavyzdys C #

Sukurkite šią klasę anksčiau sukurtoje konsolės programoje esančiame faile pavadinimu Author.cs.

visuomenės klasės Autorius

    {

[Būtina (ErrorMessage = "Būtina {0}")]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Vardą turi sudaryti mažiausiai 3 simboliai ir ne daugiau kaip 50 simbolių")]

[DataType (DataType.Text)]

public string FirstName {get; rinkinys; }

[Būtina (ErrorMessage = "Būtina {0}")]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Pavardę turi sudaryti mažiausiai 3 simboliai ir ne daugiau kaip 50 simbolių")]

[DataType (DataType.Text)]

vieša eilutė Pavardė {get; rinkinys; }

[DataType (DataType.PhoneNumber)]

[Telefonas]

viešoji eilutė Telefono numeris {get; rinkinys; }

[DataType (DataType.EmailAddress)]

[Elektroninio pašto adresas]

viešoji eilutė El. paštas {get; rinkinys; }

    }

Šis kodo fragmentas parodo, kaip galite sukurti „Author“ klasės egzempliorių ir priskirti jo ypatybėms vertes.

Autorius autorius = naujas autorius ();

autorius.Vardas = "Joydipas";

autorius.Pavardė = "";

autorius.PhoneNumber = "1234567890";

author.Email = "[email protected]";

Norėdami patvirtinti savo modelį, failo „Program.cs“ pagrindiniame metode galite parašyti šį kodo fragmentą.

ValidationContext context = new ValidationContext (autorius, null, null);

Sąrašo patvirtinimo rezultatai = naujas sąrašas ();

„Bool valid“ = „Validator.TryValidateObject“ (autorius, kontekstas, validationResults, true);

jei (! galioja)

{

foreach (ValidationResult validationRestult validationResults)

  {

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

  }

}

„ValidationContext“ yra klasė, kuri pateikia kontekstą, kuriame turėtų būti atliekamas patvirtinimas. Klasės „Validator“ statinis metodas „TryValidateObject“ grąžina reikšmę „true“, jei patvirtinimas yra sėkmingas, kitaip - „false“. Taip pat pateikiamas „ValidationResults“ sąrašas, kuriame pateikiama išsami informacija apie visus modelio nepavykusius patvirtinimus. Galiausiai mes panaudojome foreach ciklą, kad pakartotume „ValidationResults“ sąrašą ir rodytume klaidos pranešimus konsolės lange.

Pilnas kodų sąrašas pateikiamas žemiau.

visuomenės klasės Autorius

    {

[Būtina (ErrorMessage = "Būtina {0}")]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Vardą turi sudaryti mažiausiai 3 simboliai ir ne daugiau kaip 50 simbolių")]

[DataType (DataType.Text)]

public string FirstName {get; rinkinys; }

[Būtina (ErrorMessage = "Būtina {0}")]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Pavardę turi sudaryti mažiausiai 3 simboliai ir ne daugiau kaip 50 simbolių")]

[DataType (DataType.Text)]

vieša eilutė Pavardė {get; rinkinys; }

[DataType (DataType.PhoneNumber)]

[Telefonas]

viešoji eilutė Telefono numeris {get; rinkinys; }

[DataType (DataType.EmailAddress)]

[Elektroninio pašto adresas]

viešoji eilutė El. paštas {get; rinkinys; }

    }

klasės programa

    {      

static void Main (string [] args)

        {

Autorius autorius = naujas autorius ();

autorius.Vardas = "Joydipas";

autorius.Pavardė = ""; // Nėra įvestos vertės

autorius.PhoneNumber = "1234567890";

author.Email = "[email protected]";

ValidationContext context = naujas ValidationContext

(autorius, niekinis, niekinis);

Sąrašo validationResults = new

Sąrašas ();

Bool valid = Validator.TryValidateObject

(autorius, kontekstas, patvirtinimasRezultatai, tiesa);

jei (! galioja)

            {

foreach (ValidationResult validationResult in

patvirtinimo rezultatai)

                {

Console.WriteLine ("{0}",

validationResult.ErrorMessage);

                }

            }

Pultas.ReadKey ();

        }

    }

Vykdydami programą, konsolės lange turėtumėte pamatyti tokį klaidos pranešimą:

Būtina nurodyti pavardę

Sukurkite pasirinktinį patvirtinimo atributą C #

Norėdami sukurti pasirinktinį patvirtinimo atributų klasę, turėtumėte išplėsti „ValidationAttribute“ pagrindinę klasę ir nepaisyti „IsValid“ metodo, kaip parodyta toliau pateiktame kodo fragmente.

[AttributeUsage (AttributeTargets.Property, AllowMultiple = false, paveldėtas = false)]

public class IsEmptyAttribute: ValidationAttribute

 {

public override bool IsValid (objekto vertė)

     {

var inputValue = reikšmė kaip eilutė;

return! string.IsNullOrEmpty (inputValue);

     }

 }

Šis kodo fragmentas parodo, kaip galite naudoti pasirinktinį atributą, kad papuoštumėte klasės „Autorius“ ypatybes „Vardas ir Pavardė“.

[IsEmpty (ErrorMessage = "Neturėtų būti tuščias ar tuščias.")]

public string FirstName {get; rinkinys; }

[IsEmpty (ErrorMessage = "Neturėtų būti tuščias ar tuščias.")]

vieša eilutė Pavardė {get; rinkinys; }

Duomenų anotacijos iš pradžių buvo įdiegtos .NET 3.5 sistemoje. „ComponentModel“. „DataAnnotations“ vardų sritis. Nuo tada jie tapo plačiai naudojama .NET funkcija. Galite pasinaudoti duomenų anotacijomis, kad apibrėžtumėte duomenų tikrinimo taisykles vienoje vietoje ir taip išvengtumėte to paties patvirtinimo kodo pakartotinio rašymo.

Būsimame įraše čia apžvelgsime, kaip duomenų anotacija gali būti naudojama ASP.NET Core MVC programose modelio patvirtinimui atlikti.

Kaip padaryti daugiau C #

  • Kada naudoti abstrakčią klasę ir sąsają C #
  • Kaip dirbti su „AutoMapper“ C #
  • Kaip naudoti lambda išraiškas C #
  • Kaip dirbti su „Action“, „Func“ ir „Predicate“ delegatais C #
  • Kaip dirbti su delegatais C #
  • Kaip įdiegti paprastą kaupiklį C #
  • Kaip dirbti su atributais C #
  • Kaip dirbti su „Log4net“ C #
  • Kaip įgyvendinti saugyklos dizaino modelį C #
  • Kaip dirbti su atspindžiu C #
  • Kaip dirbti su failų stebėjimo programa C #
  • Kaip atlikti tingų inicializavimą C #
  • Kaip dirbti su MSMQ C #
  • Kaip dirbti su plėtinių metodais C #
  • Kaip mums lambda išraiškos C #
  • Kada naudoti nepastovų raktinį žodį C #
  • Kaip naudoti pajamingumo raktinį žodį C #
  • Kaip įgyvendinti polimorfizmą C #
  • Kaip sukurti savo užduočių planavimo priemonę C #
  • Kaip dirbti su „RabbitMQ“ C #
  • Kaip dirbti su dvigubu C #
  • Naršyti virtualius ir abstrakčius metodus C #
$config[zx-auto] not found$config[zx-overlay] not found