Запрошенная услуга не была зарегистрирована! Инъекция Зависимости AutoFac


Я просто пытаюсь использовать AutoFac для разрешения зависимостей, но он выдает исключение, такое как

запрошенная услуга "ProductService" не была зарегистрирована. Чтобы избежать этого исключения, либо зарегистрируйте компонент для предоставления услуги или используйте зарегистрирован()...

class Program
{
    static void Main(string[] args)
    {
        var builder = new ContainerBuilder();

        builder.RegisterType<ProductService>().As<IProductService>();

        using (var container = builder.Build())
        {
            container.Resolve<ProductService>().DoSomething();
        }
    }
}

public class ProductService : IProductService
{
    public void DoSomething()
    {
        Console.WriteLine("I do lots of things!!!");
    }
}

public interface IProductService
{
    void DoSomething();
}

Что я сделал не так ?

1 12

1 ответ:

С утверждением:

builder.RegisterType<ProductService>().As<IProductService>();

Сказал Autofac всякий раз, когда кто-то пытается решить IProductService дать им ProductService

Поэтому вам нужно решить IProductService и к ProductService:

using (var container = builder.Build())
{
    container.Resolve<IProductService>().DoSomething();
}

Или если вы хотите сохранить Resolve<ProductService>, зарегистрируйте его в AsSelf:

builder.RegisterType<ProductService>().AsSelf();