Я нахожусь в довольно интересной ситуации, когда мне требуется, чтобы мой AutoMapper мог отображать объекты от типа TSource
до TDestination
со следующими ограничениями:
- Во время отображения мне нужнодоступ к службе, предоставляемой
IServiceProvider
(или, точнее, из инжектора зависимости). - Моя функция отображения должна знать, какое свойство сопоставления находится в целевом объекте.Это означает, что мне не нужно знать, что свойство target имеет тип
string
, но это свойство называется Name
или Address
в сопоставленном типе.Причина этого заключается в том, что мне нужно иметь доступ к атрибутам этого свойства.
Первое ограничение может быть легко довольно просто неудобно с помощью пользовательского преобразователя или значенияконвертер.
public class MyValueResolver<TSource, TDestination>
: IValueResolver<TSource, TDestination, string>
{
private readonly ISomeService _someService;
public MyValueResolver(ISomeService someService)
{
_someService = someService;
}
public string Resolve(TSource source, TDestination destination,
string destMember, ResolutionContext context)
{
string result;
// Perform some complex logic with _someService and attributes of
// the target property...
return result;
}
}
Но я не могу понять, как узнать, какое свойство сопоставитель сопоставляет с целевым объектом.Есть ли способ получить эту информацию в методе Resolve(source, dest, member, context)
?
Мы используем самую последнюю версию AutoMapper в ASP.NET Core.