首页 > 解决方案 > 如何强制 AutoMapper 非常严格?

问题描述

这是一个例子:

class Source
{
    public int Value_1 { get; set; }
    public int Value_2 { get; set; }
    public int MissedValue { get; set; }
}

class Destination
{
    public int Value_1 { get; set; }
    public int Value_2 { get; set; }
}

void Main()
{
    var config = new AutoMapper.MapperConfiguration(cfg =>
    {
        cfg.CreateMap<Source, Destination>()
            .ForMember(dst => dst.Value_1, m => m.MapFrom(src => src.Value_1))
            .ForMember(dst => dst.Value_2, m => m.MapFrom(src => src.Value_2))
        ;
    });

    config.AssertConfigurationIsValid();
}

最后,当我缺少源字段而不仅仅是目标字段时,我需要 AssertConfigurationIsValid() 来引发异常。

另外,如何强制它禁用任何类型和命名转换?像 int -> string、Test.Id -> TestId 等。我需要它尽可能地受到限制。或者对于我的情况,也许有更好的选择?

UPDATE_0:好的。找到第一部分的答案。只需要使用

cfg.CreateMap<Source, Destination>(AutoMapper.MemberList.Source)

同时支持这两种验证类型会很棒,但这已经是一个好的开始。现在剩下的是,如何删除所有命名约定和类型转换器。

标签: c#automapper

解决方案


推荐阅读