自动映射程序未映射计算属性



我有一个简单的界面,比如:

interface IEntity
{
int EntityID { get; }
}

以及使用EntityID的计算属性实现的许多类,如

class Person : IEntity
{
public int PersonID { get; set; }
public int EntityID => PersonID;
}

我正在尝试使用Automapper:映射到另一个具有相同属性的类,如下面的类

class Result
{
public int EntityID { get; }
}

不过,我无法用它来绘制房产地图。下面的测试失败了,因为结果中的EntityID始终是0,即使我明确设置了ForMember()映射,如下所示:

using AutoMapper;
using Xunit;
public class UnitTest1
{       
[Fact]
public void Test1()
{
var mapper = new MapperConfiguration(cfg => cfg.CreateMap<IEntity, Result>()
.ForMember(dest => dest.EntityID, i => i.MapFrom(src => src.EntityID)))
.CreateMapper();
var result = mapper.Map<Result>(new Person() { PersonID = 5 });
Assert.Equal(5, result.EntityID);
}
}

一定有一些明显的解决方案,我在这里错过了。如有任何帮助,我们将不胜感激。

对于简单的属性,AM需要一个setter来工作,就像手动方法一样。

最新更新