我有一个简单的界面,比如:
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来工作,就像手动方法一样。