Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# AutoMapper不映射可空属性上的空值,为什么?_C#_.net_Automapper - Fatal编程技术网

C# AutoMapper不映射可空属性上的空值,为什么?

C# AutoMapper不映射可空属性上的空值,为什么?,c#,.net,automapper,C#,.net,Automapper,下面是一个小的代码片段来说明这个问题 [TestMethod] public void AutoMapper_MappingNullValue_ShouldMapNull() { //Arrange var source = new DummySource { MyDate = null }; var destination = new DummyDestination { MyDate = DateTime.Now }; AutoMapper.Mapper.Cr

下面是一个小的代码片段来说明这个问题

[TestMethod]
public void AutoMapper_MappingNullValue_ShouldMapNull()
{
    //Arrange
    var source = new DummySource { MyDate = null };
    var destination = new DummyDestination { MyDate = DateTime.Now };
    AutoMapper.Mapper.CreateMap<DummySource, DummyDestination>();

    //Act
    var returnResult = AutoMapper.Mapper.Map(source, destination);

    //Assert
    Assert.IsNull(returnResult.MyDate);
    Assert.IsNotNull(destination.MyDate);
}

private class DummySource
{
    public DateTime? MyDate { get; set; }
}

private class DummyDestination
{
    public DateTime? MyDate { get; set; }
}
[TestMethod]
public void AutoMapper_MappingNullValue_ShouldMapNull()
{
//安排
var source=new DummySource{MyDate=null};
var destination=new DummyDestination{MyDate=DateTime.Now};
AutoMapper.Mapper.CreateMap();
//表演
var returnResult=AutoMapper.Mapper.Map(源、目标);
//断言
Assert.IsNull(returnResult.MyDate);
Assert.IsNotNull(destination.MyDate);
}
私有类DummySource
{
公共日期时间?MyDate{get;set;}
}
私有类DummyDestination
{
公共日期时间?MyDate{get;set;}
}

为什么第一次断言失败了?我希望结果中有一个空值。事实上,
returnResult
destination
都是初始值。

尝试更新nuget包


这是固定的。实现此更改的第一个版本是。

它没有使第一个断言失败。第二个断言应该失败,因为您正在将
映射到
目标
,从而映射到
目标。MyDate
null
。使用
var returnResult=AutoMapper.Mapper.Map(源代码)
保留现有对象。@Romoku自己看看您使用的是哪个版本的AutoMapper?您的代码对我来说运行良好。2.2.0.0是版本3.0.0中的行为不同。尝试更新nuget软件包。谢谢。祝您度过愉快的一天