
متد ForMember در AutoMapper
متد ForMember در AutoMapper یکی از مهمترین قابلیتهای AutoMapper است که به شما اجازه میدهد نگاشت یک پراپرتی خاص در شیء مقصد را به صورت سفارشی تعریف کنید. این متد در سناریوهایی کاربرد دارد که ویژگیهای منبع (Source) و مقصد (Destination) نامهای متفاوت دارند، یا نیاز به تبدیل مقادیر دارید.
متد ForMember کمک میکند نگاشت پراپرتی ها را سفارشی کنید. میتوانید نامها را تغییر دهید، مقادیر را ترکیب کنید، نادیده بگیرید، یا مقدار پیشفرض تنظیم کنید.
گزینههای ForMember
ForMember یک متد کلی است که میتواند گزینههای مختلفی را بپذیرد. گزینههای ForMember شامل موارد زیر است.
- گزینه MapFrom برای تعریف منطق نگاشت سفارشی استفاده میشود
- گزینه Ignore برای نادیده گرفتن پراپرتی مقصد.
- گزینه NullSubstitute مقدار پیشفرض برای مقدار null.
- گزینه Condition برای اعمال شرط قبل از نگاشت.
- گزینه SetMappingOrder برای تنظیم ترتیب نگاشت.
- گزینه UseDestinationValue اگر مقصد قبلاً مقداردهی شده باشد و بخواهید از آن مقدار استفاده کنید، از این گزینه استفاده میشود
ساختار ForMember
ساختار ForMember به صورت زیر است.
- ورودی destinationMember مشخص میکند که کدام فیلد در مدل مقصد باید مقداردهی شود.
- گزینه ها options مجموعهای از متدها برای سفارشیسازی رفتار نگاشت.
- ورودی sourceExpression مشخص میکند مقدار فیلد مقصد از کجا و چگونه محاسبه شود.
مثال با 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));































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