I am using Simple Injector for the first time. Nuget the MVC QuickStart version. In SimpleInjectorInializer.cs this gets called.
public static class SimpleInjectorInitializer
{
/// <summary>Initialize the container and register it as MVC3 Dependency Resolver.</summary>
public static void Initialize()
{
// Did you know the container can diagnose your configuration?
// Go to: https://simpleinjector.org/diagnostics
var container = new Container();
InitializeContainer(container);
container.RegisterMvcControllers(Assembly.GetExecutingAssembly());
container.Verify();
DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container));
}
private static void InitializeContainer(Container container)
{
// For instance:
container.Register<IQueryProcessor, QueryProcessor>(Lifestyle.Singleton);
container.RegisterInitializer<WebApiController>(
p=> p.QueryProcessor = container.GetInstance<IQueryProcessor>());
}
WebApiController.cs. Injection doesn't happen.
public class WebApiController : ApiController
{
public IQueryProcessor QueryProcessor { get; set; }
public WebApiController(IQueryProcessor queryProcessor)
{
QueryProcessor = queryProcessor;
}
RegisterInitializer<WebApiController>is probably some test code, but it's best to refrain from using property injection completely. Stick with constructor injection.