AutoMapper IValueResolver любой асинхронный эквивалент? - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть преобразователь

public class MyValueResolver : IValueResolver<Entity, Dto, List<InnerDto>>
{
    private readonly IService _service;

    public MyValueResolver(IService service)
    {
        _service = service;
    }

    public List<InnerDto> Resolve(
        Entity source,
        Dto destination, 
        List<InnerDto> destMember, 
        ResolutionContext context)
    {
        IEnumerable<InnerDto> innerDtos =
            _service.GetAsync(/*...*/).Result; // .Result block thread.

        return innerDtos.ToList();
    }
}

.Result выполняет синхронную операцию и блокирует поток.

Есть ли какие-либо обходные пути в этой ситуации, например, будет хорошо иметь некоторые IAsyncValueResolver

public interface IAsyncValueResolver<in TSource, in TDestination, TDestMember>
{
    Task<TDestMember> ResolveAsync(TSource source, TDestination destination, TDestMember destMember, ResolutionContext context);
}
...