متد ForMember در AutoMapper

متد ForMember در AutoMapper یکی از مهم‌ترین قابلیت‌های AutoMapper است که به شما اجازه می‌دهد نگاشت یک پراپرتی خاص در شیء مقصد را به صورت سفارشی تعریف کنید. این متد در سناریوهایی کاربرد دارد که ویژگی‌های منبع (Source) و مقصد (Destination) نام‌های متفاوت دارند، یا نیاز به تبدیل مقادیر دارید.

متد ForMember کمک می‌کند نگاشت پراپرتی ها را سفارشی کنید. می‌توانید نام‌ها را تغییر دهید، مقادیر را ترکیب کنید، نادیده بگیرید، یا مقدار پیش‌فرض تنظیم کنید.

گزینه‌های ForMember

ForMember یک متد کلی است که می‌تواند گزینه‌های مختلفی را بپذیرد. گزینه‌های ForMember شامل موارد زیر است.

  • گزینه‌ MapFrom برای تعریف منطق نگاشت سفارشی استفاده می‌شود
  • گزینه‌ Ignore برای نادیده گرفتن پراپرتی مقصد.
  • گزینه‌ NullSubstitute مقدار پیش‌فرض برای مقدار null.
  • گزینه‌ Condition برای اعمال شرط قبل از نگاشت.
  • گزینه‌ SetMappingOrder برای تنظیم ترتیب نگاشت.
  • گزینه‌ UseDestinationValue اگر مقصد قبلاً مقداردهی شده باشد و بخواهید از آن مقدار استفاده کنید، از این گزینه استفاده می‌شود

ساختار ForMember

ساختار ForMember به صورت زیر است.

  • ورودی destinationMember مشخص می‌کند که کدام فیلد در مدل مقصد باید مقداردهی شود.
  • گزینه ها options مجموعه‌ای از متدها برای سفارشی‌سازی رفتار نگاشت.
  • ورودی sourceExpression مشخص می‌کند مقدار فیلد مقصد از کجا و چگونه محاسبه شود.
ساختار ForMember

ساختار ForMember

مثال با MapFrom

  • تبدیل و یا ترکیب دو فیلد توسط MapFrom

قصد داریم فیلدهای Name و Family را باهم ترکیب و در فیلد جدیدی نمایش دهیم.

.ForMember(dest => dest.NameDisplay, opt => opt.MapFrom(src => src.Name + " " + src.Family))
  • تغییر ساختار فیلد زمان ثبت نام توسط MapFrom

برای این کار یک پراپرتی به نام RegisterDateDisplay از نوع string به ViewModel خود باید اضافه کنیم. و همچنین در Viewها نیز مقدار RegisterDateDisplay را وارد کنیم.

.ForMember(dist => dist.RegisterDateDisplay, opt => opt.MapFrom(src => src.RegisterDate.ToString("در سال yyyy و ماه MMMM")));
  • شرط توسط MapFrom

برای این کار یک پراپرتی به نام AgeDisplay از نوع string به ViewModel خود باید اضافه کنیم. و همچنین در Viewها نیز مقدار AgeDisplay را وارد کنیم.

.ForMember(dist => dist.AgeDisplay, opt => opt.MapFrom(src => src.Age >= 18 ? "سن قانونی" : "غیرقانونی"));

مثال با Condition

  • قرار دادن شرط توسط Condition

فقط سن افرادی را نمایش بده که بالای ۱۸ سال سن دارند.

.ForMember(dist => dist.Age, opt => opt.Condition(src => src.Age >= 18));

مثال با NullSubstitute

  • پر کردن فیلد های Null با مقدار پیش فرض

سن افرادی که وارد نشده است -۱ قرار بده.

.ForMember(dist => dist.Age, opt => opt.NullSubstitute(-1));

مشاهده در آپارات یا یوتیوب

محتوای ویدیویی این صفحه در سایت قابل مشاهده است. اما اگر عادت دارید توی پلتفرم آپارات یا یوتیوب ویدیوها را مشاهده کنید، می‌توانید از دکمه‌های زیر استفاده کنید.

تماشای ویدیوی متد ForMember در AutoMapper در آپارات و یوتیوب

اشتراک‌گذاری با یک کلیک

با یک کلیک، محتوای این صفحه را در شبکه‌های اجتماعی، ایمیل یا پیام‌رسان‌های مورد علاقه‌تان به‌سرعت به اشتراک بگذارید.

اشتراک‌گذاری صفحه متد ForMember در AutoMapper در شبکه‌های اجتماعی

نظرات ارزشمند شما

نظرات شما برای ما ارزشمند است و آنها را میخوانیم و پاسخ میدهیم.

تصویر ملیکا حسنی

استاد ممنون از آموزش های خوبتون. هیچ جا به این کاملی آموزش نداده بود. آموزش های شما سخت ترین مطالب رو آسون میکنه.

تصویر محمدرضا احدیان

ممنون از محبتی که به ما دارید. خوشحالم آموزش ها برای شما مفید بوده.

فرم افزودن دیدگاه

با ارسال نظرات خود ما را در ایجاد محتوای بهتر کمک کنید.

با خدمات تهران آی تی آشنا شوید

تهران آی تی با افتخار خدمات زیر را ارائه می‌دهد.