Given this these classes, how can I map a dictionary of them?
public class TestClass
{
public string Name { get; s
The problem you are having is because AutoMapper is struggling to map the contents of the Dictionary. You have to think what it is a store of - in this case KeyValuePairs.
If you try create a mapper for the KeyValuePair combination you will quickly work out that you can't directly as the Key property doesn't have a setter.
AutoMapper gets around this though by allowing you to Map using the constructor.
/* Create the map for the base object - be explicit for good readability */
Mapper.CreateMap()
.ForMember( x => x.Name, o => o.MapFrom( y => y.Name ) );
/* Create the map using construct using rather than ForMember */
Mapper.CreateMap, KeyValuePair>()
.ConstructUsing( x => new KeyValuePair( x.Key,
x.Value.MapTo() ) );
var testDict = new Dictionary();
var testValue = new TestClass()
{
Name = "value1"
};
testDict.Add( "key1", testValue );
/* Mapped Dict will have your new KeyValuePair in there */
var mappedDict = Mapper.Map,
Dictionary>( testDict );