AutoMapper - Custom Type Converters
Another scenario where AutoMapper cannot do default mapping is when the types of the properties in both source and destination classes are different. Even though the names are same, there is no way AutoMapper can proceed in cases such as from String to Int32 or DateTime. If try to do mapping then AutoMapper will throw exception at the time of configuration or at the time of mapping itself.
This problem can be solved using the Custom Type Converters available in AutoMapper. We can create custom type converters by extending the ITypeConverter interface and provide the logic needed for converting the source to the destination
In this example, the type of DateOfBirth property is different in both source and destination classes. So if try to do the mapping without any converters it will throw an excetion like the one given
Run-time exception (line 48): Missing type map configuration or unsupported mapping. Mapping types: String -> DateTime System.String -> System.DateTime Destination path: PersonVM.DateOfBirth.DateOfBirth Source value: 03-24-1991
So to avoid this kind of exceptions, you need to create a type for the unsupported mapping. For that we will create a new class by inheriting the ITypeConverter interface and will write the conversion logic inside the Convert method as shown below.
public class DateTimeConverterForString : ITypeConverter<string, DateTime> { public DateTime Convert(ResolutionContext context) { return System.Convert.ToDateTime(context.SourceValue); } }
No Comments
Connecting Azure Blob Storage account using Managed Identity
Posted 12/9/2022Securing Azure KeyVault connections using Managed Identity
Posted 11/26/2022Manage application settings with Azure KeyVault
Posted 11/9/2022Adding Serilog to Azure Functions created using .NET 5
Posted 4/3/2021Learn how to split log data into different tables using Serilog in ASP.NET Core
Posted 4/23/2020