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.