La cartographie des dictionnaires AutoMapper
Compte tenu de ces classes, comment puis-je carte un dictionnaire?
public class TestClass
{
public string Name { get; set; }
}
public class TestClassDto
{
public string Name { get; set; }
}
Mapper.CreateMap<TestClass, TestClassDto>();
Mapper.CreateMap<Dictionary<string, TestClass>,
Dictionary<string, TestClassDto>>();
var testDict = new Dictionary<string, TestClass>();
var testValue = new TestClass() {Name = "value1"};
testDict.Add("key1", testValue);
var mappedValue = Mapper.Map<TestClass, TestClassDto>(testValue);
var mappedDict = Mapper.Map<Dictionary<string, TestClass>,
Dictionary<string, TestClassDto>>(testDict);
Cartographie de l'un d'eux, mappedValue dans ce cas, fonctionne très bien.
Le mappage d'un dictionnaire d'entre eux se retrouve avec pas entrées dans l'objet de destination.
Ce que je fais worng?
OriginalL'auteur rboarman | 2011-05-13
Vous devez vous connecter pour publier un commentaire.
Le problème que vous rencontrez est parce que AutoMapper est en proie à la carte le contenu du Dictionnaire. Vous devez penser que c'est un magasin de dans ce cas KeyValuePairs.
Si vous essayez de créer un mappeur pour la KeyValuePair combinaison vous allez rapidement découvrir que vous ne pouvez pas directement en tant que de propriété de la Clé n'a pas un setter.
AutoMapper obtient autour de ce bien en vous permettant de la Carte en utilisant le constructeur.
dans mon cas de test, il a commencé à travailler même sans l'aide de
ConstructUsing
juste après l'ajout deCreateMap<KeyValuePair<string, TestClass>, KeyValuePair<string, TestClassDto>>()
Doux, ont peut-être changé dans les 7 dernières années 🙂
OriginalL'auteur Dave Walker