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

每当有人试图解决时告诉 AutofacIProductService给他们一个ProductService

所以你需要解决IProductServiceand 到ProductService

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

或者,如果您想将其Resolve<ProductService>注册到 AsSelf:

builder.RegisterType<ProductService>().AsSelf();
于 2013-03-16T12:18:09.340 回答