Programovanie

Ako používať dátové anotácie v C #

Dátové anotácie (k dispozícii ako súčasť priestoru názvov System. ComponentModel. DataAnnotations) sú atribúty, ktoré je možné použiť na triedy alebo členov triedy na určenie vzťahu medzi triedami, na popísanie spôsobu zobrazenia údajov v používateľskom rozhraní a na určenie pravidiel overovania. Tento článok hovorí o anotáciách údajov, prečo sú užitočné a ako ich používať v našich aplikáciách .NET Core.

Ak chcete pracovať s príkladmi kódu uvedenými v tomto článku, mali by ste mať vo svojom systéme nainštalovanú aplikáciu Visual Studio 2019. Ak ešte nemáte kópiu, môžete si tu stiahnuť Visual Studio 2019.

Vytvorte projekt konzolovej aplikácie v Visual Studio 2019

Najprv si vytvoríme projekt konzolovej aplikácie .NET Core v Visual Studio. Za predpokladu, že je vo vašom systéme nainštalované Visual Studio 2019, postupujte podľa krokov uvedených nižšie a vytvorte nový projekt konzolovej aplikácie .NET Core v Visual Studio.

  1. Spustite Visual Studio IDE.
  2. Kliknite na „Vytvoriť nový projekt“.
  3. V okne „Vytvoriť nový projekt“ vyberte zo zobrazeného zoznamu šablón „Console App (.NET Core)“.
  4. Kliknite na Ďalej.
  5. V nasledujúcom okne „Konfigurácia nového projektu“ zadajte názov a umiestnenie nového projektu.
  6. Kliknite na tlačidlo Vytvoriť.

Týmto sa vytvorí nový projekt konzolovej aplikácie .NET Core v Visual Studio 2019. Tento projekt použijeme na prácu s anotáciami údajov v ďalších častiach tohto článku.

Zahrnúť systém. ComponentModel. Menný priestor DataAnnotations

Ak chcete pracovať so vzorkami kódu uvedenými v tomto článku, mali by ste zahrnúť Systém. ComponentModel. Menný priestor DataAnnotations vo vašom programe.

Upozorňujeme, že atribúty sa používajú na zadanie metaúdajov o triede alebo vlastnosti. Atribúty anotácie údajov je možné zhruba rozdeliť do nasledujúcich skupín:

  • Atribút validácie - slúži na vynútenie pravidiel overovania vlastností entít
  • Atribút displeja - slúži na určenie, ako sa majú údaje zobraziť v používateľskom rozhraní
  • Atribút modelovania - slúži na určenie vzťahu, ktorý existuje medzi triedami

Triedy atribútov anotácií údajov v C #

Obor názvov System.ComponentModel.Annotations obsahuje niekoľko tried atribútov, ktoré možno použiť na definovanie metadát pre vaše triedy entít alebo ovládacie prvky údajov. Medzi najčastejšie používané atribúty patria:

  • Kontrola súbežnosti
  • Kľúč
  • Maximálna dĺžka
  • Požadovaný
  • StringLength
  • Časová značka

Príklad anotácií údajov v C #

Vytvorte nasledujúcu triedu v súbore s názvom Author.cs v konzolovej aplikácii, ktorú sme vytvorili skôr.

verejná trieda Autor

    {

[Povinné (ErrorMessage = "{0} je povinné")]]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Meno by malo mať minimálne 3 znaky a najviac 50 znakov")]

[DataType (DataType.Text)]

verejný reťazec FirstName {get; sada; }

[Povinné (ErrorMessage = "{0} je povinné")]]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Priezvisko by malo mať minimálne 3 znaky a najviac 50 znakov")]

[DataType (DataType.Text)]

verejný reťazec Priezvisko {get; sada; }

[DataType (DataType.PhoneNumber)]

[Telefón]

verejný reťazec PhoneNumber {get; sada; }

[DataType (DataType.EmailAddress)]

[Emailová adresa]

verejný reťazec Email {get; sada; }

    }

Nasledujúci úryvok kódu ilustruje, ako môžete vytvoriť inštanciu triedy Author a priradiť hodnoty k jej vlastnostiam.

Autor autor = nový Autor ();

author.FirstName = "Joydip";

author.LastName = "";

autor.PhoneNumber = "1234567890";

author.Email = "[email protected]";

Nasledujúci útržok kódu môžete zapísať do hlavnej metódy súboru Program.cs na overenie vášho modelu.

ValidationContext context = nový ValidationContext (autor, null, null);

List validationResults = new List ();

bool valid = Validator.TryValidateObject (autor, kontext, validationResults, true);

ak (! platné)

{

foreach (ValidationResult validationResult v validationResults)

  {

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

  }

}

ValidationContext je trieda, ktorá vám poskytuje kontext, v ktorom by sa malo vykonať overenie. Statická metóda TryValidateObject triedy Validator vráti hodnotu true, ak je overenie úspešné, inak hodnota false. Vráti tiež zoznam ValidationResults, ktorý podrobne popisuje všetky validácie, ktoré na modeli zlyhali. Nakoniec sme použili slučku foreach na iteráciu zoznamu ValidationResults a zobrazenie chybových správ v okne konzoly.

Celý zoznam kódov je uvedený nižšie pre vašu informáciu.

verejná trieda Autor

    {

[Povinné (ErrorMessage = "{0} je povinné")]]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Meno by malo mať minimálne 3 znaky a najviac 50 znakov")]

[DataType (DataType.Text)]

verejný reťazec FirstName {get; sada; }

[Povinné (ErrorMessage = "{0} je povinné")]]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Priezvisko by malo mať minimálne 3 znaky a najviac 50 znakov")]

[DataType (DataType.Text)]

verejný reťazec Priezvisko {get; sada; }

[DataType (DataType.PhoneNumber)]

[Telefón]

verejný reťazec PhoneNumber {get; sada; }

[DataType (DataType.EmailAddress)]

[Emailová adresa]

verejný reťazec Email {get; sada; }

    }

triedny program

    {      

static void Main (reťazec [] args)

        {

Autor autor = nový Autor ();

author.FirstName = "Joydip";

author.LastName = ""; // Nie je zadaná žiadna hodnota

autor.PhoneNumber = "1234567890";

author.Email = "[email protected]";

ValidationContext context = nový ValidationContext

(autor, null, null);

Zoznam validationResults = nový

Zoznam ();

bool valid = Validator.TryValidateObject

(autor, kontext, validationResults, true);

ak (! platné)

            {

foreach (ValidationResult validationResult v

validationResults)

                {

Console.WriteLine ("{0}",

validationResult.ErrorMessage);

                }

            }

Console.ReadKey ();

        }

    }

Po spustení programu by sa mala v okne konzoly zobraziť nasledujúca chybová správa:

Priezvisko je povinné

Vytvorte vlastný atribút overenia v C #

Ak chcete vytvoriť vlastnú triedu atribútu overenia, mali by ste rozšíriť základnú triedu ValidationAttribute a prepísať metódu IsValid, ako je uvedené v útržku kódu uvedenom nižšie.

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

verejná trieda IsEmptyAttribute: ValidationAttribute

 {

verejné prepísanie bool IsValid (hodnota objektu)

     {

var inputValue = hodnota ako reťazec;

return! string.IsNullOrEmpty (inputValue);

     }

 }

Nasledujúci úryvok kódu ilustruje, ako môžete pomocou vlastného atribútu ozdobiť vlastnosti FirstName a LastName triedy Author.

[IsEmpty (ErrorMessage = "Nemalo by byť nulové alebo prázdne.")]

verejný reťazec FirstName {get; sada; }

[IsEmpty (ErrorMessage = "Nemalo by byť nulové alebo prázdne.")]

verejný reťazec Priezvisko {get; sada; }

Dátové anotácie boli pôvodne zavedené v .NET 3.5 ako súčasť systému. ComponentModel. Menný priestor DataAnnotations. Od tej doby sa stali často používanou funkciou v .NET. Môžete využiť výhody anotácií údajov na definovanie pravidiel overovania údajov na jednom mieste a vyhnúť sa tak nutnosti opakovane písať ten istý overovací kód.

V budúcom príspevku sa pozrieme na to, ako možno anotáciu údajov použiť v aplikáciách ASP.NET Core MVC na vykonanie overenia modelu.

Ako urobiť viac v C #

  • Kedy použiť abstraktné rozhranie vs. rozhranie v C #
  • Ako pracovať s AutoMapperom v C #
  • Ako používať výrazy lambda v C #
  • Ako pracovať s delegátmi Action, Func a Predicate v C #
  • Ako pracovať s delegátmi v C #
  • Ako implementovať jednoduchý záznamník v C #
  • Ako pracovať s atribútmi v C #
  • Ako pracovať s log4net v C #
  • Ako implementovať vzor návrhu úložiska v C #
  • Ako pracovať s odrazom v C #
  • Ako pracovať so súborovým systémom v C #
  • Ako vykonať lenivú inicializáciu v C #
  • Ako pracovať s MSMQ v C #
  • Ako pracovať s metódami rozšírenia v C #
  • Ako na nás výrazy lambda v C #
  • Kedy použiť volatile kľúčové slovo v C #
  • Ako používať kľúčové slovo výťažku v C #
  • Ako implementovať polymorfizmus v C #
  • Ako zostaviť vlastný plánovač úloh v C #
  • Ako pracovať s RabbitMQ v C #
  • Ako pracovať s n-ticí v C #
  • Skúmanie virtuálnych a abstraktných metód v C #
$config[zx-auto] not found$config[zx-overlay] not found