Faça com que o .NET Core DI resolva automaticamente a classe por implementação genérica de interface / classe abstrata

Existe uma maneira no .NET Core de registrar uma interface genérica e resolver uma classe que corresponde a uma determinada implementação.

Por exemplo, eu tenho a seguinte interface:

public interface IMapper<TFrom, TTo>
{
}

Eu também tenho uma classe abstrata:

public abstract class Mapper<TFrom, TTo> : IMapper<TFrom, TTo>
{
    protected Mapper()
    {
        // some generic stuff
    }

    public abstract TTo Map(TFrom);
}

Posso então criar uma implementação assim:

public class UserMapper : Mapper<Domain.User, Entity.User>
{
    public override Entity.User Map(Domain.User from)
    {
        // do mapping
    }
}

Existe uma maneira, usando o .NET Core DI padrão para registrarIMapper<,>e deixá-lo resolver automaticamente a classe?

Então, se eu, por exemplo, faria isso em algum lugar no código:

class SomeClass
{
    public SomeClass(IMapper<Domain.User, Entity.User> mapper) {}
}

Que de alguma forma sabe que deveria resolver a classeUserMapper<Domain.User, Entity.User>?

O motivo é que é um pouco detalhado registrar manualmente cada mapeador, específico para uma implementação. Então eu estou esperandoMicrosoft.DependencyInjection é inteligente o suficiente para resolver automaticamente sua implementação de alguma forma.

questionAnswers(2)

yourAnswerToTheQuestion