Затем добавьте это в startup.cs
ли в .NET Core способ зарегистрировать универсальный интерфейс и заставить его разрешать класс, соответствующий определенной реализации.
Например, у меня есть следующий интерфейс:
public interface IMapper<TFrom, TTo>
{
}
У меня также есть абстрактный класс:
public abstract class Mapper<TFrom, TTo> : IMapper<TFrom, TTo>
{
protected Mapper()
{
// some generic stuff
}
public abstract TTo Map(TFrom);
}
Затем я могу создать реализацию следующим образом:
public class UserMapper : Mapper<Domain.User, Entity.User>
{
public override Entity.User Map(Domain.User from)
{
// do mapping
}
}
Есть ли способ, используя .NET Core DI по умолчанию для регистрацииIMapper<,>
, и пусть это автоматически разрешает класс?
Так что, если я, например, сделал бы это где-то в коде:
class SomeClass
{
public SomeClass(IMapper<Domain.User, Entity.User> mapper) {}
}
Что он как-то знает, что он должен разрешить классUserMapper<Domain.User, Entity.User>
?
Причина в том, что это немного многословно, чтобы вручную регистрировать каждый и каждый маппер, специфичный для реализации. Так что я надеюсьMicrosoft.DependencyInjection
достаточно умен, чтобы как-то автоматически разрешить его реализацию.