כיצד לעבוד עם AutoMapper ב- C #

AutoMapper היא ספריית מיפוי פופולרית בין אובייקט לאובייקט אשר באמצעותה ניתן למפות אובייקטים השייכים לסוגים שונים. כדוגמה, ייתכן שיהיה עליך למפות את ה- DTOs (אובייקטים להעברת נתונים) ביישום שלך לאובייקטים המודל. AutoMapper חוסך לך את המאמץ המייגע שיש למפות ידנית מאפיין אחד או יותר מסוגים לא תואמים כאלה.

כדי להתחיל לעבוד עם AutoMapper, עליך ליצור פרוייקט ב- Visual Studio ואז להתקין AutoMapper. באפשרותך להתקין את AutoMapper מ- NuGet באמצעות הפקודה הבאה בחלון מסוף מנהל החבילות NuGet:

ראש ממשלה> AutoMapper להתקנת חבילה

צור מיפויים באמצעות AutoMapper

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

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

    {

        מזהה ציבורי

        {

            לקבל; מַעֲרֶכֶת;

        }

        שם פרטי ציבורי

        {

            הכן;

        }

        שם משפחה ציבורי

        {

            לקבל; מַעֲרֶכֶת;

        }

        כתובת מחרוזת ציבורית

        {

            לקבל; מַעֲרֶכֶת;

        }

    }

 מעמד ציבורי AuthorDTO

    {

        מזהה ציבורי

        {

            לקבל; מַעֲרֶכֶת;

        }

        שם פרטי ציבורי

        {

            לקבל; מַעֲרֶכֶת;

        }

        שם משפחה ציבורי

        {

            לקבל; מַעֲרֶכֶת;

        }

        כתובת מחרוזת ציבורית

        {

            לקבל; מַעֲרֶכֶת;

        }

    }

קטע הקוד הבא מראה כיצד ניתן ליצור מפה בין שני הסוגים הללו, AuthorModel ו- AuthorDTO.

var config = MapperConfiguration חדש (cfg => {

                cfg.CreateMap ();

            });

ואז לבצע את המיפוי בין הסוגים פשוט כמו שמוצג פיסת הקוד הבאה.

IMapper iMapper = config.CreateMapper ();

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

var destination = iMapper.Map (מקור);

דוגמה של AutoMapper 

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

var config = MapperConfiguration חדש (cfg => {

                cfg.CreateMap ();

            });

IMapper iMapper = config.CreateMapper ();

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

source.Id = 1;

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

source.LastName = "Kanjilal";

source.Address = "הודו";

var destination = iMapper.Map (מקור);

Console.WriteLine ("שם המחבר:" + destination.FirstName + "" + destination.LastName);

כאשר אתה מבצע את פיסת הקוד הנ"ל, שם המחבר השמור בתוך אובייקט היעד יוצג. עם זאת, הערכים של מאפייני היעד FirstName וה- LastName היעד יהיו זהים לאובייקט המקור מכיוון שמיפית את האובייקטים בהצלחה באמצעות AutoMapper!

שים לב כי AutoMapper יכול למפות כל קבוצת שיעורים. עם זאת, AutoMapper עוקב אחר מוסכמות מסוימות, אחת מהן היא ששמות המאפיינים הממופים צריכים להיות בעלי שמות זהים. אם שמות המאפיינים אינם זהים, עליך ליידע את AutoMapper כיצד יש למפות את המאפיינים. בהנחה שברצוננו למפות את שני המאפיינים Contact ו- ContactDetails, הדוגמה הבאה ממחישה כיצד ניתן להשיג זאת.

var config = MapperConfiguration חדש (cfg => {

                cfg.CreateMap ()

                .ForMember (יעד => יעד. ContactDetails,

               opts => opts.MapFrom (source => source.Contact));

            });

שים לב להצהרה הבאה המשמשת ליצירת אובייקט היעד.

var destination = iMapper.Map (מקור);

אם אובייקט היעד כבר קיים, תוכל להשתמש בהצהרה שלמטה במקום זאת.

iMapper.Map (sourceObject, destinationObject);

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

שימוש בתחזיות ב- AutoMapper

AutoMapper מספק תמיכה מצוינת לתחזיות. תחזיות משמשות למיפוי ערכי מקור ליעד שאינו תואם את מבנה המקור. (לעומת זאת, המיפוי עליו דנו לעיל היה מיפוי אחד לאחד).

בואו נסתכל כעת על השלכה. לדוגמה, שקול את הכיתה הבאה.

 כתובת בכיתה ציבורית

    {

        מחרוזת ציבורית סיטי {לקבל; מַעֲרֶכֶת; }

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

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

    }

בואו והמחלקה ל- AuthorModel נשתמש בכיתת Address לאחסון פרטי הכתובת של הכותבים. הנה איך תראה מחלקת AuthorModel המעודכנת.

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

    {

        מזהה ציבורי

        {

            לקבל; מַעֲרֶכֶת;

        }

        שם פרטי ציבורי

        {

            הכן;

        }

        שם משפחה ציבורי

        {

            לקבל; מַעֲרֶכֶת;

        }

        כתובת כתובת ציבורית

        {

            לקבל; מַעֲרֶכֶת;

        }

    }

 והנה מחלקת AuthorDTO המעודכנת.

מעמד ציבורי AuthorDTO

    {

        מזהה ציבורי

        {

            לקבל; מַעֲרֶכֶת;

        }

        שם פרטי ציבורי

        {

            לקבל; מַעֲרֶכֶת;

        }

        שם משפחה ציבורי

        {

            לקבל; מַעֲרֶכֶת;

        }

        מחרוזת ציבורית סיטי {לקבל; מַעֲרֶכֶת; }

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

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

    }

עכשיו נניח שעלינו למפות את המחלקות AuthorDTO ו- AuthorModel. קטע הקוד הבא ממחיש כיצד ניתן להשיג זאת.

var config = MapperConfiguration חדש (cfg => {

                cfg.CreateMap ()

                   . ForMember (יעד => יעד. כתובת,

              map => map.MapFrom (

                  מקור => כתובת חדשה

                  {

                      עיר = מקור .עיר,

                      מדינה = מקור .מדינה,

                      מדינה = מקור. ארץ

                  }));

אדון בתכונות המתקדמות יותר של AutoMapper בפוסט עתידי כאן. עד אז תוכל ללמוד עוד על AutoMapper בקישור זה.

כיצד לעשות יותר ב- 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 #