web-dev-qa-db-ja.com

リクエストされたサービスは登録されていません! AutoFac依存性注入

AutoFacを使用して依存関係を解決しようとしていますが、次のような例外がスローされます

要求されたサービス 'ProductService'は登録されていません。この例外を回避するには、サービスを提供するコンポーネントを登録するか、IsRegistered()...を使用します

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();
}

私が間違ったことは何ですか?

20

次のステートメントで:

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

誰かがIProductServiceを解決しようとするたびにAutofacにProductServiceを伝えた

したがって、IProductServiceProductServiceを解決する必要があります。

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

または、Resolve<ProductService> AsSelfに登録します。

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