Verwendung von Datenanmerkungen in C #

Datenanmerkungen (verfügbar als Teil des System. ComponentModel. DataAnnotations-Namespace) sind Attribute, die auf Klassen oder Klassenmitglieder angewendet werden können, um die Beziehung zwischen Klassen anzugeben, zu beschreiben, wie die Daten in der Benutzeroberfläche angezeigt werden sollen, und Validierungsregeln anzugeben. Dieser Artikel beschreibt Datenanmerkungen, warum sie nützlich sind und wie sie in unseren .NET Core-Anwendungen verwendet werden.

Um mit den in diesem Artikel bereitgestellten Codebeispielen arbeiten zu können, muss Visual Studio 2019 auf Ihrem System installiert sein. Wenn Sie noch keine Kopie haben, können Sie Visual Studio 2019 hier herunterladen. 

Erstellen Sie ein Konsolenanwendungsprojekt in Visual Studio 2019

Zunächst erstellen wir ein .NET Core Console-Anwendungsprojekt in Visual Studio. Angenommen, Visual Studio 2019 ist auf Ihrem System installiert, führen Sie die folgenden Schritte aus, um ein neues .NET Core Console-Anwendungsprojekt in Visual Studio zu erstellen.

  1. Starten Sie die Visual Studio-IDE.
  2. Klicken Sie auf "Neues Projekt erstellen".
  3. Wählen Sie im Fenster "Neues Projekt erstellen" aus der Liste der angezeigten Vorlagen "Konsolen-App (.NET Core)" aus.
  4. Weiter klicken. 
  5. Geben Sie im nächsten Fenster "Konfigurieren Sie Ihr neues Projekt" den Namen und den Speicherort für das neue Projekt an.
  6. Klicken Sie auf Erstellen.

Dadurch wird ein neues .NET Core-Konsolenanwendungsprojekt in Visual Studio 2019 erstellt. In diesem Projekt werden wir in den folgenden Abschnitten dieses Artikels mit Datenanmerkungen arbeiten.

Schließen Sie das System ein. ComponentModel. DataAnnotations-Namespace

Um mit den in diesem Artikel angegebenen Codebeispielen arbeiten zu können, sollten Sie das System einschließen. ComponentModel. DataAnnotations-Namespace in Ihrem Programm.

Beachten Sie, dass Attribute verwendet werden, um Metadaten für eine Klasse oder eine Eigenschaft anzugeben. Die Datenanmerkungsattribute können grob in Folgendes eingeteilt werden:

  • Validierungsattribut - Wird verwendet, um Validierungsregeln für die Eigenschaften der Entitäten durchzusetzen
  • Anzeigeattribut - Wird verwendet, um anzugeben, wie die Daten in der Benutzeroberfläche angezeigt werden sollen
  • Modellierungsattribut - Wird verwendet, um die Beziehung zwischen Klassen anzugeben

Attributklassen für Datenanmerkungen in C #

Der System.ComponentModel.Annotations-Namespace umfasst mehrere Attributklassen, mit denen Metadaten für Ihre Entitätsklassen oder Datensteuerelemente definiert werden können. Die am häufigsten verwendeten Attribute umfassen Folgendes:

  • ConcurrencyCheck
  • Schlüssel
  • Maximale Länge
  • Erforderlich
  • String-Länge
  • Zeitstempel

Beispiel für Datenanmerkungen in C #

Erstellen Sie die folgende Klasse in einer Datei mit dem Namen Author.cs in der zuvor erstellten Konsolenanwendung.

öffentliche Klasse Autor

    {

        [Erforderlich (ErrorMessage = "{0} ist erforderlich")]

        [StringLength (50, MinimumLength = 3,

        ErrorMessage = "Der Vorname sollte mindestens 3 Zeichen und höchstens 50 Zeichen umfassen")]

        [DataType (DataType.Text)]

        öffentliche Zeichenfolge Vorname {get; einstellen; }}

        [Erforderlich (ErrorMessage = "{0} ist erforderlich")]

        [StringLength (50, MinimumLength = 3,

        ErrorMessage = "Nachname sollte mindestens 3 Zeichen und maximal 50 Zeichen enthalten")]

        [DataType (DataType.Text)]

        öffentlicher String Nachname {get; einstellen; }}

        [DataType (DataType.PhoneNumber)]

        [Telefon]

        öffentliche Zeichenfolge PhoneNumber {get; einstellen; }}

        [DataType (DataType.EmailAddress)]

        [E-Mail-Addresse]

        öffentliche Zeichenfolge Email {get; einstellen; }}

    }}

Das folgende Codeausschnitt zeigt, wie Sie eine Instanz der Author-Klasse erstellen und ihren Eigenschaften Werte zuweisen können.

Autor Autor = neuer Autor ();

author.FirstName = "Joydip";

author.LastName = "";

author.PhoneNumber = "1234567890";

author.Email = "[email protected]";

Sie können das folgende Codeausschnitt in die Hauptmethode der Datei Program.cs schreiben, um Ihr Modell zu validieren.

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

List validationResults = new List ();

bool valid = Validator.TryValidateObject (Autor, Kontext, Validierungsergebnisse, true);

if (! valid)

{

  foreach (ValidationResult validationResult in validationResults)

  {

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

  }}

}}

ValidationContext ist die Klasse, die Ihnen den Kontext bereitstellt, in dem die Validierung durchgeführt werden soll. Die statische TryValidateObject-Methode der Validator-Klasse gibt true zurück, wenn die Validierung erfolgreich ist, andernfalls false. Außerdem wird eine Liste mit ValidationResults zurückgegeben, in der alle Validierungen aufgeführt sind, die im Modell fehlgeschlagen sind. Schließlich haben wir eine foreach-Schleife verwendet, um die Liste der ValidationResults zu iterieren und die Fehlermeldungen im Konsolenfenster anzuzeigen.

Die vollständige Codeliste finden Sie unten als Referenz.

öffentliche Klasse Autor

    {

        [Erforderlich (ErrorMessage = "{0} ist erforderlich")]

        [StringLength (50, MinimumLength = 3,

        ErrorMessage = "Der Vorname sollte mindestens 3 Zeichen und höchstens 50 Zeichen umfassen")]

        [DataType (DataType.Text)]

        öffentliche Zeichenfolge Vorname {get; einstellen; }}

        [Erforderlich (ErrorMessage = "{0} ist erforderlich")]

        [StringLength (50, MinimumLength = 3,

        ErrorMessage = "Nachname sollte mindestens 3 Zeichen und maximal 50 Zeichen enthalten")]

        [DataType (DataType.Text)]

        öffentlicher String Nachname {get; einstellen; }}

        [DataType (DataType.PhoneNumber)]

        [Telefon]

        öffentliche Zeichenfolge PhoneNumber {get; einstellen; }}

        [DataType (DataType.EmailAddress)]

        [E-Mail-Addresse]

        öffentliche Zeichenfolge Email {get; einstellen; }}

    }}

    Klassenprogramm

    {      

        statische Leere Main (string [] args)

        {

            Autor Autor = neuer Autor ();

            author.FirstName = "Joydip";

            author.LastName = ""; // Kein Wert eingegeben

            author.PhoneNumber = "1234567890";

            author.Email = "[email protected]";

            ValidationContext context = neuer ValidationContext

            (Autor, null, null);

            Listenvalidierungsergebnisse = neu

            Liste();

            bool valid = Validator.TryValidateObject

            (Autor, Kontext, Validierungsergebnisse, wahr);

            if (! valid)

            {

                foreach (ValidationResult validationResult in

                validationResults)

                {

                    Console.WriteLine ("{0}",

                    validationResult.ErrorMessage);

                }}

            }}

            Console.ReadKey ();

        }}

    }}

Wenn Sie das Programm ausführen, sollte im Konsolenfenster die folgende Fehlermeldung angezeigt werden:

Nachname ist erforderlich

Erstellen Sie ein benutzerdefiniertes Validierungsattribut in C #

Um eine benutzerdefinierte Validierungsattributklasse zu erstellen, sollten Sie die ValidationAttribute-Basisklasse erweitern und die IsValid-Methode überschreiben, wie im folgenden Codeausschnitt gezeigt.

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

öffentliche Klasse IsEmptyAttribute: ValidationAttribute

 {

    public override bool IsValid (Objektwert)

     {

         var inputValue = Wert als Zeichenfolge;

         return! string.IsNullOrEmpty (inputValue);

     }}

 }}

Das folgende Codeausschnitt zeigt, wie Sie das benutzerdefinierte Attribut verwenden können, um die Eigenschaften FirstName und LastName der Author-Klasse zu dekorieren.

[IsEmpty (ErrorMessage = "Sollte nicht null oder leer sein.")]

öffentliche Zeichenfolge Vorname {get; einstellen; }}

[IsEmpty (ErrorMessage = "Sollte nicht null oder leer sein.")]

öffentlicher String Nachname {get; einstellen; }}

Datenanmerkungen wurden ursprünglich in .NET 3.5 als Teil des Systems eingeführt. ComponentModel. DataAnnotations-Namespace. Seitdem sind sie eine weit verbreitete Funktion in .NET. Sie können Datenanmerkungen nutzen, um Datenvalidierungsregeln an einem einzigen Ort zu definieren, und müssen so vermeiden, dass Sie denselben Validierungscode immer wieder neu schreiben müssen.

In einem zukünftigen Beitrag hier werden wir untersuchen, wie Datenanmerkungen in ASP.NET Core MVC-Anwendungen verwendet werden können, um eine Modellvalidierung durchzuführen.

Wie man mehr in C # macht

  • Wann wird eine abstrakte Klasse im Vergleich zur Schnittstelle in C # verwendet?
  • So arbeiten Sie mit AutoMapper in C #
  • Verwendung von Lambda-Ausdrücken in C #
  • So arbeiten Sie mit Action-, Func- und Predicate-Delegaten in C #
  • So arbeiten Sie mit Delegierten in C #
  • So implementieren Sie einen einfachen Logger in C #
  • So arbeiten Sie mit Attributen in C #
  • So arbeiten Sie mit log4net in C #
  • So implementieren Sie das Repository-Entwurfsmuster in C #
  • Wie man mit Reflexion in C # arbeitet
  • So arbeiten Sie mit dem Dateisystemwatcher in C #
  • So führen Sie eine verzögerte Initialisierung in C # durch
  • So arbeiten Sie mit MSMQ in C #
  • So arbeiten Sie mit Erweiterungsmethoden in C #
  • Wie wir Lambda-Ausdrücke in C #
  • Wann wird das flüchtige Schlüsselwort in C # verwendet?
  • Verwendung des Schlüsselwortsield in C #
  • So implementieren Sie Polymorphismus in C #
  • So erstellen Sie Ihren eigenen Taskplaner in C #
  • So arbeiten Sie mit RabbitMQ in C #
  • So arbeiten Sie mit einem Tupel in C #
  • Erkundung virtueller und abstrakter Methoden in C #