NWa*_*ard 5 c# string datetime automapper
我的期望是AutoMapper(3.3.0)不会自动解析字符串 - > DateTime转换,即使字符串是一种易于理解的格式.在图书馆作者吉米·博加德(Jimmy Bogard)对此StackOverflow答案的评论中,注意到缺少一个默认字符串 - > DateTime转换器(尽管是四年前):https://stackoverflow.com/a/4915449/1675729
但是,我有一个.NET小提琴,它似乎暗示AutoMapper 可以默认处理这个映射:https://dotnetfiddle.net/dDtUGx
在该示例中,Zing属性从stringin 映射Foo到DateTimein in Bar,而不指定自定义映射或解析器.
但是,当此代码在我的解决方案单元测试中运行时(使用相同的AutoMapper版本),它会产生我期望的异常,即:
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
Run Code Online (Sandbox Code Playgroud)
导致这种不一致行为的原因是什么?
为了完整起见,.NET Fiddle中的代码在此处转载:
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; }
}
}
Run Code Online (Sandbox Code Playgroud)
我相信自 Automapper v2.0 起,stringto转换是由一个名为 的DateTime内部处理的,但查看源代码,这似乎是特定于平台的:只有某些平台(.Net full、SL5、WinRT)提供此映射器。“便携式”.Net 程序集没有此平台特定的映射器。IObjectMapperTypeConverterMapper
如果您的单元测试引用 Automapper 3.3.0 的可移植程序集,则会出现错误。如果它们引用完整的 .Net 4.0 程序集,映射就会成功。
| 归档时间: |
|
| 查看次数: |
602 次 |
| 最近记录: |