自动更新字典值

我有一个包含字典的实体,我想要实现的是自动播放器不仅仅是替换字典而是更新它的值。

class ExampleClass { public string Name { get; set; } public Dictionary Dictionary { get; set; } } Mapper.CreateMap().ForAllMembers(opt => opt.Condition(srs => !srs.IsSourceValueNull)); var originalClass = new ExampleClass(); originalClass.Name = "Original Class"; originalClass.Dictionary = new Dictionary { {0, new []{"V1", "V2", "V3"}}, {1, new []{"V1", "V2", "V3"}}, {2, new []{"V1", "V2", "V3"}} }; var newelyCreatedClass = new ExampleClass(); newelyCreatedClass.Dictionary = new Dictionary { {1, new []{"E1", "E2", "E9"}}, }; Mapper.Map(newelyCreatedClass, originalClass); 

在上面的代码中,automapper奇怪地不使用key == 1更新Dictionary元素,而是将整个原始元素替换为newelyCreatedClass创建的newelyCreatedClass

AutoMapper只是自动比较和设置值(如果存在),这就是属性被覆盖的原因。 但您可以使用名为Custom Value Resolvers的自动化function。

然后你可以写一个解析器来检查字典及其值。

 public class CustomResolver : IValueResolver> { public Dictionary Resolve(ExampleClass source, ExampleClass destination, Dictionary member, ResolutionContext context) { // logic to iterate through the dictionarys and resolve into dictionary containing values that you want. } }