Пример, который вы показали в вопросе, работает хорошо, если вы замените конфигурацию следующим образом:
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<IInterface2, class2>();
services.AddScoped<IInterface1, class1>();
}
Обратите внимание, что строка, которую вы написали:
services.AddScoped<IInterface1, class1>(x => (class1)x.GetService<IInterface1>())
вызывает Access Violation
(потому что, когда требуется Interface1
, система зависимостей попытается получить ... 1011 * из системы зависимостей, используя GetService
, выполняя это правило в бесконечной рекурсии)
Нам нужны дополнительные сведения, чтобы понять вашу проблему и помочь решить ее.
Возможно, вам придется создать фабрику для ваших классов или решить круговую зависимость, о которой вы упоминали в комментариях, что, очевидно, не позволяет вам использовать простое инъекция, показанная здесь.