خرید بک لینک

Vote count: 0

I'm trying to wire up dependency injection inside my ApiControllers. I don't think AutoFac is instantiating the interface because I keep getting the following error:

Object reference not set to an instance of an object.

public class UserformsController : ApiController
{
    private IUserformsRepository _userformRepo;

    public UserformsController(){}

    public UserformsController(IUserformsRepository userformRepo)
    {
        this._userformRepo = userformRepo;
    }

    [HttpGet]
    public object Get(string userId, int formId)
    {
        retu _userformRepo.GetUserform(userId, formId);
    }
}

And here is the config. I'm sure I'm missing something but I can't figure out what.

public static void RegisterDependencies()
    {
        #region Create the builder

        var builder = new ContainerBuilder();

        #endregion Create the builder

        #region Setup a common patte

        // placed here before RegisterControllers as last one wins
        builder.RegisterAssemblyTypes()
               .Where(t => t.Name.EndsWith("Repository"))
               .AsImplementedInterfaces()
               .InstancePerRequest();
        builder.RegisterAssemblyTypes()
               .Where(t => t.Name.EndsWith("Service"))
               .AsImplementedInterfaces()
               .InstancePerRequest();

        #endregion Setup a common patte

        #region Register modules

        builder.RegisterAssemblyModules(typeof(ApiController).Assembly);

        #endregion Register modules

        #region Register Controllers in Assembly

        builder.RegisterControllers(typeof(ApiController).Assembly);

        #endregion Register Controllers in Assembly

        #region Inject HTTP Abstractions

        /*
         The MVC Integration includes an Autofac module that will add HTTP request
         lifetime scoped registrations for the HTTP abstraction classes. The
         following abstract classes are included:
        -- HttpContextBase
        -- HttpRequestBase
        -- HttpResponseBase
        -- HttpServerUtilityBase
        -- HttpSessionStateBase
        -- HttpApplicationStateBase
        -- HttpBrowserCapabilitiesBase
        -- HttpCachePolicyBase
        -- VirtualPathProvider

        To use these abstractions add the AutofacWebTypesModule to the container
        using the standard RegisterModule method.
        */
        builder.RegisterModule<AutofacWebTypesModule>();

        #endregion Inject HTTP Abstractions

        #region Register Global Filters

        builder.RegisterFilterProvider();

        #endregion Register Global Filters

        #region Set the MVC dependency resolver to use Autofac

        var container = builder.Build();

        DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

        #endregion Set the MVC dependency resolver to use Autofac
    }

asked 5 mins ago

برچسب: نویسنده: استخدام کار تاريخ: شنبه 1 خرداد 1395 ساعت: 3:16

صفحه بندی