2014-03-06 15 views
5

Ich verwende Unity mit Unity.MVC5. Die Klasse, die die Typen und die Abhängigkeit Resolver registriert ist als unten:Unity löst die Abhängigkeit nicht auf

public static class UnityConfig 
{ 
    public static void RegisterComponents() 
    { 
     var container = new UnityContainer(); 

     container 
      .RegisterType<ILogger, Nlogger>() 
      .RegisterType<IDataAccessLayer, SqlDataAccessLayer>() 
      .RegisterType<IEventBusiness, EventBusiness>(); 

     DependencyResolver.SetResolver(new UnityDependencyResolver(container)); 

    } 
} 

Und hier ist mein Global.asax Code:

void Application_Start(object sender, EventArgs e) 
{ 
    UnityConfig.RegisterComponents(); 
    GlobalConfiguration.Configure(WebApiConfig.Register); 
    RouteConfig.RegisterRoutes(RouteTable.Routes); 
} 

In einem meinem Controller ich eine Immobilie wie diese:

[Dependency] 
public IEventBusiness EventBusiness { get; set; } 

Ich erwarte, dass diese Eigenschaft automatisch von Unity festgelegt wird, aber es ist immer null. Kann mir jemand helfen herauszufinden, was ich falsch mache?

+0

Sie können auch versuchen, eine 'InjectionProperty' Config auf die Registrierung zu liefern. Alternativ, warum nicht versuchen, Konstruktor Injektion statt? – StuartLC

+0

Registrierst du deine Controller im Container? – TylerOhlsen

+0

@TylerOhlsen, nein Ich registriere die Controller nicht. Muss ich? Wenn ich DependencyResolver.Current im Controller überprüfe, bekomme ich die korrekte Instanz von UnityContainer mit allen registrierten Typen. – Aref

Antwort

Verwandte Themen