La mia aspettativa è che AutoMapper (3.3.0) non risolva automaticamente le conversioni string -> DateTime, anche quando la stringa è in un formato ben compreso. La mancanza di inclusione di un convertitore stringa -> DateTime predefinito viene annotata (anche se quattro anni fa) in un commento dell'autore della libreria, Jimmy Bogard, in questa risposta StackOverflow: https://stackoverflow.com/a/4915449/1675729AutoMapper risolvendo in modo incoerente stringa -> DateTime
Tuttavia, ho un .NET Fiddle che sembra suggerire che automapper può gestire questa mappatura di default: https://dotnetfiddle.net/dDtUGx
in questo esempio, la proprietà Zing
è mappata da un string
in Foo
ad un DateTime
in bar senza una mappatura personalizzata o resolver viene specificato.
Tuttavia, quando questo codice viene eseguito nel mio test di unità di soluzione (utilizzando la stessa versione automapper), produce l'eccezione mi aspetto, che è:
AutoMapper.AutoMapperMappingExceptionMissing type map configuration or unsupported mapping.
Mapping types:
String -> DateTime
System.String -> System.DateTime
Destination path:
Bar.Zing
Source value:
Friday, December 26, 2014
cosa sta causando questo comportamento incoerente?
Per completezza, il codice all'interno del .NET Fiddle è qui riprodotto:
using System;
using AutoMapper;
public class Program
{
public static void Main()
{
var foo = new Foo();
foo.Zing = DateTime.Now.ToLongDateString();
Mapper.CreateMap<Foo, Bar>();
var bar = Mapper.Map(foo, new Bar());
Console.WriteLine(bar.Zing);
}
public class Foo
{
public string Zing { get; set; }
}
public class Bar
{
public DateTime Zing { get; set; }
}
}
È necessario anche eseguire il mapping della stringa a DateTime – MikeSW