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?
Sie können auch versuchen, eine 'InjectionProperty' Config auf die Registrierung zu liefern. Alternativ, warum nicht versuchen, Konstruktor Injektion statt? – StuartLC
Registrierst du deine Controller im Container? – TylerOhlsen
@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