c #automapper字典到字典[复制]

问题描述 投票:6回答:1

这个问题在这里已有答案:

我试图将Superhero模型自动映射到Supervillan模型,每个模型都有类似的字典声明:

超级英雄:

public class Superheroes {
    public Dictionary<string, SomeHero>> SuperNumber {get; set;}
}

public class SomeHero {
 // unique properties
}

超级恶棍:

public class Supervillans {
    public Dictionary<string, SomeVillan>> SuperNumber {get; set;}
}

public class SomeVillan {
 // unique properties
}

我尝试在其他类似的线程中遵循建议,但没有成功。这是我最近的尝试,执行失败:

CreateMap<KeyValuePair<string, Superheroes>, KeyValuePair<string, Supervillans>>(); 

我怎么能把我的Superhero qazxsw poi字典映射到我的Super Villain qazxsw poi字典?

注意:SomeHero / SomeVillan模型将具有独特的属性,但我对此问题并不关心它们。

c# dictionary automapper
1个回答
3
投票

它应该开箱即用。字典不需要显式配置映射:SuperNumber。如果属性与我的示例中的相同,则对于类也是如此。

SuperNumber

如果您随后使用如下所示的automapper,则映射应该自动运行。

Dynamic and ExpandoObjects

如果你想对类的映射进行硬编码,那么应该这样做:

public class ObjA
{ 
    public string Name { get; set; }
}

public class ObjB
{
    public string Name { get; set; }
}

public class ClassA
{
    public Dictionary<string, ObjA> Vals { get; set; } = new Dictionary<string, ObjA>{
        {"a", new ObjA(){ Name = "A", } },
        {"b", new ObjA(){ Name = "B", } },
        {"c", new ObjA(){ Name = "C", } },
        {"d", new ObjA(){ Name = "D", } },
    };
}

public class ClassB
{
    public Dictionary<string, ObjB> Vals { get; set; } = new Dictionary<string, ObjB>{
        {"a", new ObjB(){ Name = "A", } },
        {"b", new ObjB(){ Name = "B", } },
        {"c", new ObjB(){ Name = "C", } },
        {"d", new ObjB(){ Name = "D", } },
    };
}
© www.soinside.com 2019 - 2024. All rights reserved.