Затем добавьте это в 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 достаточно умен, чтобы как-то автоматически разрешить его реализацию.

Ответы на вопрос(2)

Ваш ответ на вопрос