Unity容器使用动态参数解析

时间:2017-02-28 15:23:11

标签: c# .net unity-container

我有一种情况,我想在我的ASP.NET 4,MVC Web应用程序中使用动态构造函数参数解析一个类。我使用的是Unity v4.0.1。我需要传递给Resolve上的服务的构造函数的值对于每个请求是不同的,如下所示。

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

我如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

我可以通过here的帮助实现以下目标。

将我的类型注册为

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

在我的Global.asax.cs

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

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

确保将MyService的构造函数设为

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