Programmering

Slik bruker du datanoteringer i C #

Datanoteringer (tilgjengelig som en del av System. ComponentModel. DataAnnotations namespace) er attributter som kan brukes på klasser eller klassemedlemmer for å spesifisere forholdet mellom klassene, beskrive hvordan dataene skal vises i brukergrensesnittet og spesifisere valideringsregler. Denne artikkelen snakker om dataanmerkninger, hvorfor de er nyttige, og hvordan du bruker dem i .NET Core-applikasjonene.

For å jobbe med kodeeksemplene som er gitt i denne artikkelen, bør du ha Visual Studio 2019 installert på systemet ditt. Hvis du ikke allerede har en kopi, kan du laste ned Visual Studio 2019 her.

Opprett et konsollapplikasjonsprosjekt i Visual Studio 2019

Først og fremst, la oss lage et .NET Core Console Application-prosjekt i Visual Studio. Forutsatt at Visual Studio 2019 er installert i systemet ditt, følger du trinnene som er beskrevet nedenfor for å opprette et nytt .NET Core Console Application-prosjekt i Visual Studio.

  1. Start Visual Studio IDE.
  2. Klikk på "Opprett nytt prosjekt."
  3. I vinduet "Opprett nytt prosjekt" velger du "Konsollapp (.NET Core)" fra listen over maler som vises.
  4. Klikk på Neste.
  5. I vinduet “Konfigurer ditt nye prosjekt” som vises, angir du navnet og stedet for det nye prosjektet.
  6. Klikk på Opprett.

Dette vil opprette et nytt .NET Core-konsollapplikasjonsprosjekt i Visual Studio 2019. Vi bruker dette prosjektet til å jobbe med dataanmerkninger i de påfølgende delene av denne artikkelen.

Inkluder systemet. ComponentModel. DataAnnotations navneområde

For å jobbe med kodeeksemplene gitt i denne artikkelen, bør du inkludere systemet. ComponentModel. DataAnnotations navneområde i programmet ditt.

Merk at attributter brukes til å spesifisere metadata på en klasse eller en eiendom. Dataanmerkningsattributtene kan i stor grad klassifiseres i følgende:

  • Valideringsattributt - brukes til å håndheve valideringsregler for egenskapene til enhetene
  • Visningsattributt - brukes til å spesifisere hvordan dataene skal vises i brukergrensesnittet
  • Modelleringsattributt - brukes til å spesifisere forholdet som eksisterer mellom klassene

Datanoteringer attributtklasser i C #

System.ComponentModel.Annotations-navneområdet inneholder flere attributtklasser som kan brukes til å definere metadata for enhetsklassene eller datakontrollene. De mest brukte attributtene inkluderer følgende:

  • ConcurrencyCheck
  • Nøkkel
  • Maks lengde
  • Påkrevd
  • StringLength
  • Tidsstempel

Eksempel på dataanmerkninger i C #

Opprett følgende klasse i en fil som heter Author.cs i konsollprogrammet vi har opprettet tidligere.

offentlig klasse Forfatter

    {

[Obligatorisk (ErrorMessage = "{0} er obligatorisk")]]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Fornavn skal være minimum 3 tegn og maksimalt 50 tegn")]

[DataType (DataType.Text)]

offentlig streng Fornavn {get; sett; }

[Obligatorisk (ErrorMessage = "{0} er obligatorisk")]]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Etternavnet skal bestå av minst 3 tegn og maksimalt 50 tegn")]

[DataType (DataType.Text)]

offentlig streng Etternavn {get; sett; }

[DataType (DataType.PhoneNumber)]

[Telefon]

offentlig streng Telefonnummer {get; sett; }

[DataType (DataType.EmailAddress)]

[Epostadresse]

offentlig streng E-post {get; sett; }

    }

Følgende kodebit illustrerer hvordan du kan opprette en forekomst av forfatterklassen og tildele verdier til egenskapene.

Forfatterforfatter = ny forfatter ();

author.FirstName = "Joydip";

author.LastName = "";

forfatter.PhoneNumber = "1234567890";

author.Email = "[email protected]";

Du kan skrive følgende kodebit i hovedmetoden til Program.cs-filen for å validere modellen.

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

List validationResults = new List ();

bool valid = Validator.TryValidateObject (author, context, validationResults, true);

hvis (! gyldig)

{

foreach (ValidationResult validationResult in validationResults)

  {

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

  }

}

ValidationContext er klassen som gir deg konteksten der valideringen skal gjøres. Den statiske metoden TryValidateObject for Validator-klassen returnerer true hvis valideringen er vellykket, ellers falsk. Den returnerer også en liste over ValidationResults som beskriver alle valideringer som har mislyktes på modellen. Til slutt har vi brukt en foreach-løkke for å gjenta listen over ValidationResults og vise feilmeldingene i konsollvinduet.

Den komplette kodelisten er gitt nedenfor for din referanse.

offentlig klasse Forfatter

    {

[Obligatorisk (ErrorMessage = "{0} er obligatorisk")]]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Fornavn skal være minimum 3 tegn og maksimalt 50 tegn")]

[DataType (DataType.Text)]

offentlig streng Fornavn {get; sett; }

[Obligatorisk (ErrorMessage = "{0} er obligatorisk")]]

[StringLength (50, MinimumLength = 3,

ErrorMessage = "Etternavnet skal bestå av minst 3 tegn og maksimalt 50 tegn")]

[DataType (DataType.Text)]

offentlig streng Etternavn {get; sett; }

[DataType (DataType.PhoneNumber)]

[Telefon]

offentlig streng Telefonnummer {get; sett; }

[DataType (DataType.EmailAddress)]

[Epostadresse]

public string Email {get; sett; }

    }

klasse Program

    {      

statisk tomrom Main (streng [] args)

        {

Forfatterforfatter = ny forfatter ();

author.FirstName = "Joydip";

author.LastName = ""; // Ingen verdi angitt

forfatter.PhoneNumber = "1234567890";

author.Email = "[email protected]";

ValidationContext context = new ValidationContext

(forfatter, null, null);

Liste validationResults = ny

Liste();

bool valid = Validator.TryValidateObject

(forfatter, kontekst, valideringResultater, sant);

hvis (! gyldig)

            {

foreach (ValidationResult validationResult i

validationResults)

                {

Console.WriteLine ("{0}",

validationResult.ErrorMessage);

                }

            }

Console.ReadKey ();

        }

    }

Når du kjører programmet, bør du se følgende feilmelding vises i konsollvinduet:

Etternavn kreves

Opprett et tilpasset valideringsattributt i C #

For å opprette en egendefinert attributtklasse for validering, bør du utvide basisklassen ValidationAttribute og overstyre IsValid-metoden som vist i kodebiten gitt nedenfor.

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

offentlig klasse IsEmptyAttribute: ValidationAttribute

 {

public override bool IsValid (objektverdi)

     {

var inputValue = verdi som streng;

return! string.IsNullOrEmpty (inputValue);

     }

 }

Følgende kodebit illustrerer hvordan du kan bruke det egendefinerte attributtet til å dekorere egenskapene fornavn og etternavn for forfatterklassen.

[IsEmpty (ErrorMessage = "Bør ikke være null eller tom.")]

offentlig streng Fornavn {get; sett; }

[IsEmpty (ErrorMessage = "Bør ikke være null eller tom.")]

offentlig streng Etternavn {get; sett; }

Datanoteringer ble opprinnelig introdusert i .NET 3.5 som en del av systemet. ComponentModel. DataAnnotations navneområde. Siden har de blitt en mye brukt funksjon i .NET. Du kan dra nytte av dataanmerkelser for å definere datavalideringsregler på et enkelt sted og derved unngå å måtte omskrive den samme valideringskoden igjen og igjen.

I et fremtidig innlegg her vil vi se på hvordan datanotering kan brukes i ASP.NET Core MVC-applikasjoner for å utføre modellvalidering.

Hvordan gjøre mer i C #

  • Når skal jeg bruke en abstrakt klasse vs. grensesnitt i C #
  • Hvordan jobbe med AutoMapper i C #
  • Hvordan bruke lambdauttrykk i C #
  • Hvordan jobbe med Action-, Func- og Predicate-delegater i C #
  • Hvordan jobbe med delegater i C #
  • Slik implementerer du en enkel logger i C #
  • Hvordan jobbe med attributter i C #
  • Hvordan jobbe med log4net i C #
  • Slik implementerer du mønsteret for depotdesign i C #
  • Hvordan jobbe med refleksjon i C #
  • Hvordan jobbe med filsystemwatcher i C #
  • Hvordan utføre lat initialisering i C #
  • Hvordan jobbe med MSMQ i C #
  • Hvordan jobbe med utvidelsesmetoder i C #
  • Hvordan vi lambdauttrykk i C #
  • Når skal du bruke det flyktige nøkkelordet i C #
  • Slik bruker du avkastningsnøkkelordet i C #
  • Hvordan implementere polymorfisme i C #
  • Hvordan lage din egen oppgaveplanlegger i C #
  • Hvordan jobbe med RabbitMQ i C #
  • Hvordan jobbe med en tuple i C #
  • Utforske virtuelle og abstrakte metoder i C #
$config[zx-auto] not found$config[zx-overlay] not found