You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过字典动态配置AutoMapper成员映射?

如何通过字典遍历配置AutoMapper属性映射?

类定义与映射字典

源类:

public class MyClass 
{
    public string Name { get; set; }
    public int Height { get; set; }
}

目标类:

public class MiaClasse 
{
    public string Nominativo { get; set; } //Name
    public int Altezza { get; set; } //Height
}

已有的属性映射字典:

var alreadyExistingDictionary = new Dictionary<string, string>
{
    { "Name", "Nominativo" },
    { "Height", "Altezza" }
};

实现方案

你的伪代码思路完全可行,AutoMapper支持通过遍历字典动态添加属性映射,以下是可直接运行的实现代码:

方式1:在Profile中配置(推荐)

public class MyMappingProfile : Profile
{
    public MyMappingProfile(Dictionary<string, string> mappingDict)
    {
        var map = CreateMap<MyClass, MiaClasse>();
        
        foreach (var kvp in mappingDict)
        {
            // kvp.Key = 源类属性名,kvp.Value = 目标类属性名
            map.ForMember(kvp.Value, opt => opt.MapFrom(kvp.Key));
        }
    }
}

方式2:直接在配置初始化时添加

var config = new MapperConfiguration(cfg =>
{
    var map = cfg.CreateMap<MyClass, MiaClasse>();
    
    foreach (var kvp in alreadyExistingDictionary)
    {
        map.ForMember(kvp.Value, opt => opt.MapFrom(kvp.Key));
    }
});

// 验证配置是否正确(可选,用于提前排查属性匹配问题)
config.AssertConfigurationIsValid();

// 创建映射器实例
var mapper = config.CreateMapper();

说明

  • ForMember方法第一个参数传入目标类的属性名,第二个参数通过MapFrom指定源类对应的属性名,完全匹配你伪代码的逻辑。
  • 如果字典中的属性名与类实际属性名不匹配,AutoMapper会在调用AssertConfigurationIsValid()时抛出异常,可提前发现配置错误。

内容的提问来源于stack exchange,提问作者Daniele Arrighi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 04:24:56