У меня есть два очень простых объекта:
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; }
}
При сопоставлении Category
с a CategoryDto
с AutoMapper мне бы хотелось:
Свойства должны отображаться как обычно, за исключением тех, которые имеют атрибут MapTo
. В этом случае я должен прочитать значение Атрибута, чтобы найти целевое свойство. Значение свойства source используется для нахождения значения для ввода в свойстве назначения (с помощью словаря). Пример всегда лучше, чем 1000 слов...
Пример:
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"
Свойство Key
отображается в MyValueProperty
(через атрибут MapTo
), а назначенное значение - "MyValue", потому что значение свойства источника - "MyKey", которое отображается (через словарь), чтобы "MyValue".
Можно ли использовать AutoMapper? Мне нужно, конечно, решение, которое работает на каждом объекте, а не только на Category/CategoryDto.