C# Automapper无法从从字典继承的自定义模型映射

C# Automapper无法从从字典继承的自定义模型映射,c#,automapper,C#,Automapper,我有一个从字典继承的模型,它有5个附加属性。这些从字典继承的对象是两个独立的其他模型中集合的一部分。映射这两个模型后,除了这5个附加属性之外,一切都很好。如何绘制这些地图?我想不出这方面的映射器配置策略 在下面提供一个虚拟示例 下面是我的模型 public class MyModel : Dictionary<string, string> // All values in dictionary maps correctly { public SomeObject Prop1

我有一个从字典继承的模型,它有5个附加属性。这些从字典继承的对象是两个独立的其他模型中集合的一部分。映射这两个模型后,除了这5个附加属性之外,一切都很好。如何绘制这些地图?我想不出这方面的映射器配置策略

在下面提供一个虚拟示例

下面是我的模型

public class MyModel : Dictionary<string, string> // All values in dictionary maps correctly
{
   public SomeObject Prop1 { get; set; } // Won't map
   public int Prop2 { get; set; } // Won't map
   public string Prop3 { get; set; } // Won't map
   public string Prop4 { get; set; } // Won't map
   public bool Prop5 { get; set; } // Won't map
}

@约翰:也许不是,只是为它编写了一个虚拟代码example@John感谢您现在修复了这一部分,以及您为什么要扩展Dictionary而不是将Dictionary作为属性之一?如果不深入研究,我猜想它会将您的对象视为一个
Dictionary
,而不是一个特定的映射类型。除了不继承
字典
之外,我不确定最好的解决方案。你不是第一个遇到这个问题的人。似乎《圣经》的作者还没有找到答案。@John可能没有,只是为它写了一个伪代码example@John感谢您现在修复了该部分,以及您为什么要扩展Dictionary而不是将Dictionary作为属性之一?不必深入了解,我的猜测是,它将对象视为一个
字典
,而不是一个特定的映射类型。除了不继承
字典
之外,我不确定最好的解决方案。你不是第一个遇到这个问题的人。似乎《圣经》的作者还没有找到答案。
public class BaseObject : ICommonInterface
{
   public IList<MyModel> MyList { get; set; }

   public int Prop1 { get; set; } 
   public bool Prop2 { get; set; } 
}

public class TargetObject : ICommonInterface
{
   public IList<MyModel> MyList { get; set; } // MyModel properties values won't map, dictionary values map ok.

   public int Prop1 { get; set; } // Maps correctly
   public bool Prop2 { get; set; } // Maps correctly
}
var model = new MyModel();
model["a"] = "some value"; // This maps ok
model["b"] = "some other value"; // This maps ok

model.Prop5 = true; // This will not be mapped in end result.

baseObject.MyList.Add(model);
_mapper.Map(baseObject, targetObject);