Mappage personnalisé avec AutoMapper

J'ai deux objets très simples:

public class CategoryDto
{
    public string Id { get; set; }

    public string MyValueProperty { get; set; }
}

public class Category
{
    public string Id { get; set; }

    [MapTo("MyValueProperty")]
    public string Key { get; set; }
}

Lors du mappage d'une Category à un CategoryDto avec AutoMapper, je voudrais le comportement suivant:

Les propriétés doivent être mappées comme d'habitude, sauf pour ceux qui ont la MapTo attribut. Dans ce cas, j'ai de la lecture de la valeur de l'Attribut pour trouver la cible de la propriété. La valeur de la propriété de la source est utilisée pour trouver la valeur pour l'injecter dans la propriété de destination (avec l'aide d'un dictionnaire). Un exemple est toujours mieux que 1000 mots...

Exemple:

Dictionary<string, string> keys = 
    new Dictionary<string, string> { { "MyKey", "MyValue" } };

Category category = new Category();
category.Id = "3";
category.Key = "MyKey";

CategoryDto result = Map<Category, CategoryDto>(category);
result.Id               //Expected : "3"
result.MyValueProperty  //Expected : "MyValue"

La Key propriété est mappée à la MyValueProperty (via le MapTo Attribut), et la valeur assignée est "Mavaleur", parce que la source de la valeur de propriété est "Maclé" qui est mappé (via dictionnaire) "Mavaleur".

Est-ce possible à l'aide de AutoMapper ? J'ai besoin d'une solution qui fonctionne sur tous les objets, pas seulement sur la Catégorie/CategoryDto.

source d'informationauteur Bidou