Automapper 未映射计算 属性
Automapper not mapping a computed property
我有一个简单的界面,如:
interface IEntity
{
int EntityID { get; }
}
和一些 classes 使用计算的 属性 实现 EntityID
,像这样:
class Person : IEntity
{
public int PersonID { get; set; }
public int EntityID => PersonID;
}
我正在尝试使用 Automapper 映射到具有相同 属性 的另一个 class,如下所示:
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 才能工作,就像手动方法一样。
我有一个简单的界面,如:
interface IEntity
{
int EntityID { get; }
}
和一些 classes 使用计算的 属性 实现 EntityID
,像这样:
class Person : IEntity
{
public int PersonID { get; set; }
public int EntityID => PersonID;
}
我正在尝试使用 Automapper 映射到具有相同 属性 的另一个 class,如下所示:
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 才能工作,就像手动方法一样。