6

Hi I want to switch from Ninject to AutoFac but I'm having some problems. Error is:

Controllers.API.Basic.AddressController' does not have a default constructor

I register this at startup:

var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

builder.RegisterType<AddressRepository>().As<IBaseRepository<Address>>();

builder.RegisterAssemblyModules(Assembly.GetExecutingAssembly());

IContainer container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

and this is my controller:

public class AddressController : GenericBaseController<Address>
{
    public AddressController(IBaseRepository<Address> repository)
        : base(repository)
    {
    }

Am I missing something? This worked with Ninject.

Soner Gönül
  • 97,193
  • 102
  • 206
  • 364
somecoolname
  • 337
  • 5
  • 16
  • 1
    if you are using webapi you need to use : `var resolver = new AutofacWebApiDependencyResolver(container); // Configure Web API with the dependency resolver. GlobalConfiguration.Configuration.DependencyResolver = resolver;` https://code.google.com/p/autofac/wiki/WebApiIntegration – nemesv Oct 02 '14 at 06:42

1 Answers1

5

Found it:

// Set the dependency resolver for Web API.
var webApiResolver = new AutofacWebApiDependencyResolver(container);
GlobalConfiguration.Configuration.DependencyResolver = webApiResolver;

After I set this it worked

somecoolname
  • 337
  • 5
  • 16