Mam dwa bardzo proste obiekty:klienta Mapowanie z AutoMapper
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; }
}
Podczas mapowania Category
Do CategoryDto
z AutoMapper Chciałbym następujące zachowanie:
The właściwości powinny być odwzorowane jak zwykle, z wyjątkiem tych, które mają atrybut MapTo
. W takim przypadku muszę odczytać wartość atrybutu, aby znaleźć właściwość docelową. Wartość właściwości źródłowej służy do znalezienia wartości do wstrzyknięcia we właściwość docelową (za pomocą słownika). Przykładem jest zawsze lepsze niż 1000 słów ...
Przykład:
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"
Obiekt Key
jest mapowany do MyValueProperty
(przez MapTo
Attribute) oraz przyporządkowana jest wartość „MyValue”, ponieważ Wartość właściwości źródła to "MyKey", która jest mapowana (przez słownik) na "MyValue".
Czy jest to możliwe przy użyciu AutoMapera? Potrzebuję oczywiście rozwiązania, które działa na każdym obiekcie, nie tylko na Category/CategoryDto.
Dlaczego trzeba atrybutów , w pierwszym kroku możesz skonfigurować niestandardowe odwzorowania i odwzorować klucz właściwości na wartość. Czy to jest możliwe? – whymatter
Chciałbym stworzyć ogólny program odwzorowujący, którego będę mógł użyć wszędzie ... wtedy mógłbym odwzorować dowolną jednostkę na dowolne dto bez żadnego dodatkowego kodu ... – Bidou
Imho, sprawiłeś, że twoja istota jest odpowiedzialna za coś, za co nie powinna być odpowiedzialna. Model viewmodel powinien określić, gdzie powinien uzyskać dane potrzebne do jego zbudowania, a nie odwrotnie. – Peter