【问题标题】:Unity Container resolve with dynamic parametersUnity Container 使用动态参数解析
【发布时间】:2017-03-05 10:46:51
【问题描述】:
我有一种情况,我想在我的 ASP.NET 4、MVC Web 应用程序中解析一个具有动态构造函数参数的类。我正在使用 Unity v4.0.1。我需要传递给 Resolve 上服务的构造函数的值对于每个请求都不同,如下所示。
var obj = new MyObject();
container.RegisterType<IMyService, MyService>(
new PerRequestLifetimeManager(),
new InjectionConstructor(obj));
我如何做到这一点?
【问题讨论】:
标签:
c#
.net
unity-container
【解决方案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
}