متد ForMember در AutoMapper یکی از مهمترین قابلیتهای AutoMapper است که به شما اجازه میدهد نگاشت یک پراپرتی خاص در شیء مقصد را به صورت سفارشی تعریف کنید. این متد در سناریوهایی کاربرد دارد که ویژگیهای منبع (Source) و مقصد (Destination) نامهای متفاوت دارند، یا نیاز به تبدیل مقادیر دارید.
متد ForMember کمک میکند نگاشت پراپرتی ها را سفارشی کنید. میتوانید نامها را تغییر دهید، مقادیر را ترکیب کنید، نادیده بگیرید، یا مقدار پیشفرض تنظیم کنید.
ForMember یک متد کلی است که میتواند گزینههای مختلفی را بپذیرد. گزینههای ForMember شامل موارد زیر است.
ساختار ForMember به صورت زیر است.
قصد داریم فیلدهای Name و Family را باهم ترکیب و در فیلد جدیدی نمایش دهیم.
.ForMember(dest => dest.NameDisplay, opt => opt.MapFrom(src => src.Name + " " + src.Family))
برای این کار یک پراپرتی به نام RegisterDateDisplay از نوع string به ViewModel خود باید اضافه کنیم. و همچنین در Viewها نیز مقدار RegisterDateDisplay را وارد کنیم.
.ForMember(dist => dist.RegisterDateDisplay, opt =>opt.MapFrom(src => src.RegisterDate.ToString("در سال yyyy و ماه MMMM")));
برای این کار یک پراپرتی به نام AgeDisplay از نوع string به ViewModel خود باید اضافه کنیم. و همچنین در Viewها نیز مقدار AgeDisplay را وارد کنیم.
.ForMember(dist => dist.AgeDisplay, opt => opt.MapFrom(src => src.Age >= 18 ? "سن قانونی" : "غیرقانونی"));
فقط سن افرادی را نمایش بده که بالای ۱۸ سال سن دارند.
.ForMember(dist => dist.Age, opt => opt.Condition(src => src.Age >= 18));
سن افرادی که وارد نشده است -۱ قرار بده.
.ForMember(dist=>dist.Age,opt=>opt.NullSubstitute(-1));
استاد ممنون از آموزش های خوبتون. هیچ جا به این کاملی آموزش نداده بود. آموزش های شما سخت ترین مطالب رو آسون میکنه.