Using Automapper ValueResolver for complex, reusable mapping

Tuesday, October 23, 2012
Automapper is a great tool to help automate the tedious task of mapping Domain Model to View Model and back.  However, sometimes, mappings are not as straightforward as a simple one to one, left to right mapping.  The example below is a real-world implementation of ValueResolver for mapping date of birth to age:

using System;
using AutoMapper;

namespace SomeCompany.SomeProject.Web.Models.ValueResolvers
{
    public class AgeValueResolver : ValueResolver<DateTime?, int>
    {
        protected override int ResolveCore(DateTime? dateOfBirth)
        {
            if (dateOfBirth.HasValue)
            {
                var age = DateTime.Today.Year - dateOfBirth.Value.Year;

                if (dateOfBirth.Value > DateTime.Today.AddYears(-age))
                {
                    age--;
                }

                return age;
            }

            return 0;
        }
    }
}

To use this within your mapping, you could do something like:

CreateMap<IPerson, PersonViewModel>()
  .ForMember(dest => dest.Age, opt => opt.ResolveUsing<AgeValueResolver>().FromMember(src => src.DOB));

13 comments:

Robert F. Crocker said...

Its very nice to see your contribution in this post. You have shown your talent and experience in your post. Thanks for sharing this post with all. psd to html

for IT the said...

Automapper is a great tool to help automate the tedious task Dot Net Training in Chennai C# real-world implementation of ValueResolver for mapping date C-Sharp Courses C# Training

Arjun Rishi said...

You shared useful post. Happy to visit your blog. Thanks for sharing.

seo training in chennai

Anu Sri said...

Excellent post! Thanks for sharing such a useful post.

web design course in chennai

Logavani G said...

hi welcome to this blog.really you have post an informative blog.it will be really helpful to many peoples.
codedUI training

Mohana M said...

Thank you admin for your valuable article. I really impressed with your blog. SAS Training in Chennai | Devops Online Training | SQL Server DBA Online Training

Jai Prakash said...

Nice post.Thanks for sharing.
SEO Training In Chennai
SEO Training Institute In Chennai

sathyaramesh said...

Thank you for this wonderful post, It really nice and informative. Keep sharing!!
German Classes in Chennai
Big Data Training in Chennai
SEO Training in Chennai
Selenium Training in Chennai
Digital Marketing Training in Chennai
JAVA Training in Chennai
Android Course in Chennai
Android Training Chennai

Amy Wong said...
This comment has been removed by the author.
Amy Wong said...

Hello today, together with a friend found a bombed little sylochku to entertain and to spend fun time Lucky online casino canada do you want as well as we have fun come in

Taskia Sultana Sohagi said...

outsourcingall.com "Nice and helpful information provided by you. Thanks Buddy
free seo training in dhaka bangladesh
Freelancing Training Center
Best Website Development and Design Company in Bangladesh

sangeetha sathyan said...

Learned a lot from your post and it is really good. Share more tech updates regularly.
ui ux design course in Chennai
ui design course in chennai
ui developer course in chennai
Ethical Hacking course in Chennai
Web Designing Course in chennai
Web development training in chennai
PHP Training in Chennai
ui ux design course in Anna Nagar
ui ux design course in Vadapalani
ui ux design course in Thiruvanmiyur

divi said...

thanks for your information really good and very nice web design company in velachery

Post a Comment