2017-02-28 4 views
0

Ich habe eine Situation, in der ich eine Klasse mit einem dynamischen Konstruktorparameter in meiner ASP.NET 4, MVC-Webanwendung auflösen möchte. Ich verwende Unity v4.0.1. Ich brauche den Wert, der an den Konstruktor des Diensts in Resolve übergeben wird, um für jede Anforderung anders zu sein, wie unten gezeigt.Unity Container Auflösung mit dynamischen Parametern

var obj = new MyObject(); 
container.RegisterType<IMyService, MyService>(
      new PerRequestLifetimeManager(), 
      new InjectionConstructor(obj)); 

Wie erreiche ich das?

Antwort

1

Ich konnte es erreichen, wie unten mit Hilfe von here.

mein Typ Registriere dich als

container.RegisterType<IMyService, MyService>(new PerRequestLifetimeManager()); 

In meinem Global.asax.cs

protected void Application_BeginRequest() 
{ 
    var obj = new MyObject(); 

    container 
     .Resolve<IMyService>(
      new ParameterOverrides 
       { 
        {"obj", obj}, 
       }.OnType<MyService>() 
     ); 
} 

Stellen Sie sicher, den Konstruktor von MyService als

public MyService(MyObject obj){ 
    //do something here 
} 
haben
Verwandte Themen