Kỳ vọng của tôi là AutoMapper (3.3.0) không tự động giải quyết chuỗi -> chuyển đổi DateTime, ngay cả khi chuỗi ở định dạng được hiểu rõ. Việc thiếu bao gồm chuỗi mặc định -> Trình chuyển đổi DateTime được ghi nhận (mặc dù bốn năm trước) trong một nhận xét của tác giả thư viện, Jimmy Bogard, về câu trả lời StackOverflow này: https://stackoverflow.com/a/4915449/1675729AutoMapper không tự động giải quyết chuỗi -> DateTime
Tuy nhiên, tôi có .NET Fiddle dường như gợi ý rằng AutoMapper thể xử lý bản đồ này theo mặc định: https://dotnetfiddle.net/dDtUGx
trong ví dụ đó, tài sản Zing
được ánh xạ từ một string
trong Foo
đến một DateTime
tại Bar mà không có một bản đồ tùy chỉnh hoặc giải quyết được quy định.
Tuy nhiên, khi mã này chạy trong các thử nghiệm đơn vị giải pháp của tôi (sử dụng cùng một phiên bản AutoMapper), nó tạo ra một ngoại lệ tôi mong đợi, đó là:
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
gì đang gây ra hành vi không phù hợp này?
Để hoàn chỉnh, các mã bên trong .NET Fiddle được sao chép ở đây:
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; }
}
}
Bạn cũng cần phải chuỗi bản đồ vào DateTime – MikeSW