כיצד להשתמש בהערות נתונים ב- C #

הערות נתונים (זמינות כחלק מהמערכת. ComponentModel. מרחב שמות DataAnnotations) הן תכונות שניתן להחיל על כיתות או על חברי הכיתה כדי לציין את הקשר בין המחלקות, לתאר כיצד הנתונים מוצגים בממשק המשתמש ולציין כללי אימות. מאמר זה מדבר על הערות נתונים, מדוע הן שימושיות וכיצד להשתמש בהן ביישומי .NET Core שלנו.

כדי לעבוד עם דוגמאות הקוד המופיעות במאמר זה, עליך להתקין במערכת Visual Studio 2019 שלך. אם עדיין אין לך עותק, תוכל להוריד את Visual Studio 2019 כאן. 

צור פרויקט יישום קונסולה ב- Visual Studio 2019

ראשית, בואו ניצור פרויקט יישום מסוף .NET Core ב- Visual Studio. בהנחה ש- Visual Studio 2019 מותקן במערכת שלך, בצע את השלבים המתוארים להלן כדי ליצור פרויקט יישום .NET Core Console חדש ב- Visual Studio.

  1. הפעל את Visual Studio IDE.
  2. לחץ על "צור פרויקט חדש".
  3. בחלון "צור פרויקט חדש" בחר "יישום קונסולה (.NET Core)" מרשימת התבניות המוצגות.
  4. הקש "הבא. 
  5. בחלון "הגדר את הפרויקט החדש שלך" שמוצג הבא, ציין את השם והמיקום של הפרויקט החדש.
  6. לחץ על צור.

פעולה זו תיצור פרויקט יישום מסוף .NET Core חדש ב- Visual Studio 2019. נשתמש בפרויקט זה כדי לעבוד עם הערות נתונים בחלקים הבאים במאמר זה.

כלול את המערכת. ComponentModel. מרחב שמות DataAnnotations

כדי לעבוד עם דוגמאות הקוד המופיעות במאמר זה, עליך לכלול את המערכת. ComponentModel. מרחב שמות של DataAnnotations בתוכנית שלך.

שים לב שתכונות משמשות לציון מטא נתונים בכיתה או בנכס. ניתן לסווג באופן כללי את מאפייני הערות הנתונים:

  • מאפיין אימות - משמש לאכיפת כללי אימות על מאפייני הישויות
  • תכונת תצוגה - משמשת לקביעת אופן הצגת הנתונים בממשק המשתמש
  • מאפיין דוגמנות - משמש לציין את הקשר הקיים בין מחלקות

הערות נתונים מייחסות שיעורים ב- C #

מרחב השמות System.ComponentModel.Annotations כולל כמה מחלקות תכונות שניתן להשתמש בהן להגדרת מטא-נתונים עבור מחלקות הישות או בקרות הנתונים שלך. המאפיינים הנפוצים ביותר כוללים את הבאים:

  • ConcurrencyCheck
  • מַפְתֵחַ
  • אורך מקסימלי
  • נדרש
  • אורך המחרוזת
  • חותמת זמן

דוגמה להערות נתונים ב- C #

צור את המחלקה הבאה בקובץ בשם Author.cs ביישום המסוף שיצרנו קודם.

מחלקה ציבורית מחבר

    {

        [חובה (ErrorMessage = "{0} חובה")]

        [StringLength (50, MinimumLength = 3,

        ErrorMessage = "השם הפרטי צריך להיות מינימום 3 תווים ומקסימום 50 תווים")]

        [DataType (DataType.Text)]

        מחרוזת ציבורית FirstName {get; מַעֲרֶכֶת; }

        [חובה (ErrorMessage = "{0} חובה")]

        [StringLength (50, MinimumLength = 3,

        ErrorMessage = "שם המשפחה צריך להיות מינימום 3 תווים ומקסימום 50 תווים")]

        [DataType (DataType.Text)]

        מחרוזת ציבורית LastName {get; מַעֲרֶכֶת; }

        [DataType (DataType.PhoneNumber)]

        [מכשיר טלפון]

        מחרוזת ציבורית PhoneNumber {get; מַעֲרֶכֶת; }

        [DataType (DataType.EmailAddress)]

        [כתובת דוא"ל]

        מחרוזת ציבורית דוא"ל {get; מַעֲרֶכֶת; }

    }

קטע הקוד הבא ממחיש כיצד ניתן ליצור מופע של מחלקת המחבר ולהקצות ערכים למאפייניו.

מחבר מחבר = מחבר חדש ();

author.FirstName = "ג'וידיפ";

author.LastName = "";

author.PhoneNumber = "1234567890";

author.Email = "[email protected]";

אתה יכול לכתוב את קטע הקוד הבא בשיטה הראשית של הקובץ Program.cs כדי לאמת את המודל שלך.

ValidationContext context = ValidationContext חדש (מחבר, null, null);

ValidationResults = רשימה חדשה ();

bool valid = Validator.TryValidateObject (מחבר, הקשר, validationResults, נכון);

אם (! תקף)

{

  foreach (ValidationResult validationResult ב validationResults)

  {

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

  }

}

ValidationContext הוא המחלקה המספקת את ההקשר שבו צריך לבצע את האימות. השיטה הסטטית TryValidateObject של המחלקה Validator מחזירה true אם האימות הוא מוצלח, כוזב אחרת. הוא גם מחזיר רשימה של ValidationResults המפרטת את כל האימותים שנכשלו במודל. לבסוף, השתמשנו בלולאת foreach כדי לחזור על רשימת ValidationResults ולהציג את הודעות השגיאה בחלון המסוף.

רישום הקוד המלא מופיע להלן לעיונך.

מחלקה ציבורית מחבר

    {

        [חובה (ErrorMessage = "{0} חובה")]

        [StringLength (50, MinimumLength = 3,

        ErrorMessage = "השם הפרטי צריך להיות מינימום 3 תווים ומקסימום 50 תווים")]

        [DataType (DataType.Text)]

        מחרוזת ציבורית FirstName {get; מַעֲרֶכֶת; }

        [חובה (ErrorMessage = "{0} חובה")]

        [StringLength (50, MinimumLength = 3,

        ErrorMessage = "שם המשפחה צריך להיות מינימום 3 תווים ומקסימום 50 תווים")]

        [DataType (DataType.Text)]

        מחרוזת ציבורית LastName {get; מַעֲרֶכֶת; }

        [DataType (DataType.PhoneNumber)]

        [מכשיר טלפון]

        מחרוזת ציבורית PhoneNumber {get; מַעֲרֶכֶת; }

        [DataType (DataType.EmailAddress)]

        [כתובת דוא"ל]

        מחרוזת ציבורית דוא"ל {get; מַעֲרֶכֶת; }

    }

    תכנית כיתתית

    {      

        ריק סטטי ראשי (מחרוזת [] טענות)

        {

            מחבר מחבר = מחבר חדש ();

            author.FirstName = "ג'וידיפ";

            author.LastName = ""; // לא הוזן ערך

            author.PhoneNumber = "1234567890";

            author.Email = "[email protected]";

            ValidationContext context = ValidationContext חדש

            (מחבר, null, null);

            רשימת validationResults = חדש

            רשימה();

            bool valid = Validator.TryValidateObject

            (מחבר, הקשר, אימות תוצאות, נכון);

            אם (! תקף)

            {

                foreach (ValidationResult validationResult ב

                validationResults)

                {

                    Console.WriteLine ("{0}",

                    validationResult.ErrorMessage);

                }

            }

            Console.ReadKey ();

        }

    }

בעת ביצוע התוכנית, הודעת השגיאה הבאה תופיע בחלון המסוף:

שם משפחה נדרש

צור מאפיין אימות מותאם אישית ב- C #

כדי ליצור מחלקת מאפייני אימות מותאמת אישית, עליך להרחיב את מחלקת הבסיס ValidationAttribute ולעקוף את שיטת IsValid כפי שמוצג בקטע הקוד המופיע להלן.

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

מחלקה ציבורית IsEmptyAttribute: ValidationAttribute

 {

    עקיפת ציבור bool IsValid (ערך אובייקט)

     {

         var inputValue = ערך כמחרוזת;

         return! string.IsNullOrEmpty (inputValue);

     }

 }

קטע הקוד הבא ממחיש כיצד ניתן להשתמש במאפיין המותאם אישית לקישוט המאפיינים FirstName ו- LastName של מחלקת המחבר.

[IsEmpty (ErrorMessage = "לא צריך להיות ריק או ריק.")]

מחרוזת ציבורית FirstName {get; מַעֲרֶכֶת; }

[IsEmpty (ErrorMessage = "לא צריך להיות ריק או ריק.")]

מחרוזת ציבורית LastName {get; מַעֲרֶכֶת; }

הערות נתונים הוצגו בתחילה ב- .NET 3.5 כחלק מהמערכת. ComponentModel. מרחב שמות DataAnnotations. מאז הם הפכו לתכונה בשימוש נרחב ב- .NET. אתה יכול לנצל את הערות הנתונים כדי להגדיר כללי אימות נתונים במקום אחד ובכך להימנע מהצורך לכתוב מחדש את אותו קוד אימות שוב ושוב.

בפוסט עתידי כאן, נבחן כיצד ניתן להשתמש בהערת נתונים ביישומי ASP.NET Core MVC לביצוע אימות מודל.

איך לעשות יותר ב- C #

  • מתי להשתמש בכיתה מופשטת לעומת ממשק ב- C #
  • כיצד לעבוד עם AutoMapper ב- C #
  • כיצד להשתמש בביטויי למבדה ב- C #
  • כיצד לעבוד עם נציגי Action, Func ו- Predicate ב- C #
  • כיצד לעבוד עם נציגים ב- C #
  • כיצד ליישם לוגר פשוט ב- C #
  • כיצד לעבוד עם תכונות ב- C #
  • כיצד לעבוד עם log4net ב- C #
  • כיצד ליישם את דפוס עיצוב המאגר ב- C #
  • כיצד לעבוד עם השתקפות ב- C #
  • כיצד לעבוד עם מערכת קבצים ב- C #
  • כיצד לבצע אתחול עצל ב- C #
  • כיצד לעבוד עם MSMQ ב- C #
  • כיצד לעבוד עם שיטות הרחבה ב- C #
  • איך לנו ביטויים למבדה ב- C #
  • מתי להשתמש במילת המפתח ההפכפכה ב- C #
  • כיצד להשתמש במילת המפתח תשואה ב- C #
  • כיצד ליישם פולימורפיזם ב- C #
  • כיצד לבנות מתזמן משימות משלך ב- C #
  • כיצד לעבוד עם RabbitMQ ב- C #
  • איך לעבוד עם ציצית ב C #
  • חקר שיטות וירטואליות ומופשטות ב- C #