33

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

私が間違ったことをしましたか?

4

1 に答える 1

44

声明で:

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();
于 2013-03-16T12:18:09.340 に答える