【问题标题】:Automapper not mapping a computed propertyAutomapper 未映射计算属性
【发布时间】:2021-07-01 18:30:11
【问题描述】:

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

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);
    }
}

这里必须有一些明显的解决方案。任何帮助将不胜感激。

【问题讨论】:

  • 我很确定 ti 可以在没有映射器的情况下工作;)
  • 二传手在哪里? :)
  • @Lucian Bargaoanu 。天哪,我是个白痴!添加二传手修复它。我知道我必须做一些愚蠢的事情。谢谢,如果您将该评论添加为答案,我会接受。

标签: c# automapper


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-01
    • 2019-01-04
    • 2017-08-29
    • 2017-02-19
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    相关资源
    最近更新 更多