it:ad:automapper:common_maps

IT:AutoMapper:Common Maps

Summary

Not everything is rosy with AutoMapper. Sometimes you get back a string that you need to convert to a DateTime, or vice versa.

Here are some common Maps that may help.

**Reminder:**

Don't forget that Value fields in ViewModels – especially if the properties are going to be displayed conditionally (and hence returning nothing) – can benefit from being nullable.

First you have to register maps per type:

//Create maps for string to both Value and Nullable Values:
//bool
Mapper.CreateMap<string, bool?>().ConvertUsing<GenericTypeConverter<string,bool?>>();
Mapper.CreateMap<string, bool>().ConvertUsing<GenericTypeConverter<string,bool>>();    
//int
Mapper.CreateMap<string, int>().ConvertUsing<GenericTypeConverter<string,int>>();
Mapper.CreateMap<string, int?>().ConvertUsing<GenericTypeConverter<string,int>>>();
//decimal
Mapper.CreateMap<string, decimal?>().ConvertUsing<GenericTypeConverter<string,decimal>>();
Mapper.CreateMap<string, decimal>().ConvertUsing<GenericTypeConverter<string,decimal?>>();
//int64
Mapper.CreateMap<string, Int64?>().ConvertUsing<GenericTypeConverter<string,int64>>();
Mapper.CreateMap<string, Int64>().ConvertUsing<GenericTypeConverter<string,int64?>>();
//DateTime
Mapper.CreateMap<string, DateTime?>().ConvertUsing<GenericTypeConverter<string,DateTime>>();
Mapper.CreateMap<string, DateTime>().ConvertUsing<GenericTypeConverter<string,DateTime?>>();
Note that I do not know how to Convert for only one method...

Refering to:

public class GenericTypeConverter<TSource,TTarget> : TypeConverter<TSource, TTarget>
{   protected override T ConvertCore(TSource source){
        return source.ConvertTo<TTarget>(source);
    }
}

If the above does not work, the more manual way is described here: http://stackoverflow.com/questions/4101516/automapper-how-to-parse-an-int-from-a-string-and-possible-to-creating-rules-bas

  • /home/skysigal/public_html/data/pages/it/ad/automapper/common_maps.txt
  • Last modified: 2023/11/04 03:21
  • by 127.0.0.1