Realice la clase de resolución automática .NET Core DI mediante la interfaz genérica / implementación de clase abstracta

¿Hay alguna manera en .NET Core para registrar una interfaz genérica y hacer que resuelva una clase que coincida con una determinada implementación?

Por ejemplo, tengo la siguiente interfaz:

public interface IMapper<TFrom, TTo>
{
}

También tengo una clase abstracta:

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

    public abstract TTo Map(TFrom);
}

Entonces puedo crear una implementación como esta:

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

¿Hay alguna manera de usar el .NET Core DI predeterminado para registrarse?IMapper<,>y dejar que se resuelva automáticamente la clase?

Entonces, si por ejemplo haría esto en algún lugar del código:

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

Que de alguna manera sabe que debería resolver la claseUserMapper<Domain.User, Entity.User>?

La razón es que es un poco detallado registrar manualmente todos y cada uno de los mapeadores, específicos de una implementación. Así que esperoMicrosoft.DependencyInjection es lo suficientemente inteligente como para resolver automáticamente su implementación de alguna manera.

Respuestas a la pregunta(2)

Su respuesta a la pregunta