Asp.net mvc 2 Unity2属性注入,如何将配置转换为流畅的语法?
我有一个httpHandler,我想使用Unity 2将依赖项注入到我的httpHandler中 我的代码如下所示:Asp.net mvc 2 Unity2属性注入,如何将配置转换为流畅的语法?,asp.net-mvc-2,unity-container,Asp.net Mvc 2,Unity Container,我有一个httpHandler,我想使用Unity 2将依赖项注入到我的httpHandler中 我的代码如下所示: public class MyHandler : BaseHandler { public MyHandler() { } public IConfigurationManager Configuration { get; set; } ... } 使用web.config,我会这样配
public class MyHandler : BaseHandler
{
public MyHandler()
{
}
public IConfigurationManager Configuration
{
get;
set;
}
...
}
使用web.config,我会这样配置它(为了简单起见,省略了配置的其余部分):
我如何使用流利的语法来做同样的事情?到目前为止,我所尝试的所有操作都会在处理程序启动时将属性设置为null
谢谢您必须调用
ConfigureInjectionFor
方法
myContainer.Configure<InjectedMembers>()
.ConfigureInjectionFor<MyHandler>(
new InjectionProperty("Configuration",
new ResolvedParameter<IConfigurationManager>())
)
)
myContainer.Configure()
.ConfigureInjectionFor(
新的InjectionProperty(“配置”,
新的ResolvedParameter())
)
)
编辑:
下面是Handler工厂的一个示例。它允许您创建处理程序
class HandlerFactory : IHttpHandlerFactory
{
public IHttpHandler GetHandler(HttpContext context, string requestType, String url, String pathTranslated)
{
return MyContainerProvider.Container.Resolve<MyHandler>();
}
public void ReleaseHandler(IHttpHandler handler)
{
}
public bool IsReusable
{
get { return false; }
}
}
class HandlerFactory:IHttpHandlerFactory
{
公共IHttpHandler GetHandler(HttpContext上下文、字符串请求类型、字符串url、字符串路径转换)
{
返回MyContainerProvider.Container.Resolve();
}
公共无效释放处理程序(IHttpHandler处理程序)
{
}
公共布尔可重用
{
获取{return false;}
}
}
然后,您必须在web应用程序中注册工厂(以允许IIS找到它)。您可以找到更多详细信息。您必须调用
ConfigureInjectionFor
方法
myContainer.Configure<InjectedMembers>()
.ConfigureInjectionFor<MyHandler>(
new InjectionProperty("Configuration",
new ResolvedParameter<IConfigurationManager>())
)
)
myContainer.Configure()
.ConfigureInjectionFor(
新的InjectionProperty(“配置”,
新的ResolvedParameter())
)
)
编辑:
下面是Handler工厂的一个示例。它允许您创建处理程序
class HandlerFactory : IHttpHandlerFactory
{
public IHttpHandler GetHandler(HttpContext context, string requestType, String url, String pathTranslated)
{
return MyContainerProvider.Container.Resolve<MyHandler>();
}
public void ReleaseHandler(IHttpHandler handler)
{
}
public bool IsReusable
{
get { return false; }
}
}
class HandlerFactory:IHttpHandlerFactory
{
公共IHttpHandler GetHandler(HttpContext上下文、字符串请求类型、字符串url、字符串路径转换)
{
返回MyContainerProvider.Container.Resolve();
}
公共无效释放处理程序(IHttpHandler处理程序)
{
}
公共布尔可重用
{
获取{return false;}
}
}
然后,您必须在web应用程序中注册工厂(以允许IIS找到它)。您可以找到更多详细信息。自Unity 1.2发布以来,ConfigureInjectionFor已过时 这应该起作用:
container.RegisterType<MyHandler>(
new InjectionProperty("Configuration"));
container.RegisterType(
新注入属性(“配置”);
自Unity 1.2发布以来,ConfigureInjectionFor已过时
这应该起作用:
container.RegisterType<MyHandler>(
new InjectionProperty("Configuration"));
container.RegisterType(
新注入属性(“配置”);
Onof,出于某种原因,这对我不起作用。我甚至在配置属性上尝试了[Dependency]属性。控制器内部的注入似乎工作得很好,但我无法让它在带有Unity的httphandler中工作。这足以配置容器。您需要构建处理程序,例如注册HttpHandlerFactoryOnof,您有这样的示例吗?还有,为什么我必须建立处理程序?这对我来说是相当新的,所以任何帮助都是非常感谢的。当然,出于某种原因,这对我来说不起作用。我甚至在配置属性上尝试了[Dependency]属性。控制器内部的注入似乎工作得很好,但我无法让它在带有Unity的httphandler中工作。这足以配置容器。您需要构建处理程序,例如注册HttpHandlerFactoryOnof,您有这样的示例吗?还有,为什么我必须建立处理程序?这对我来说是相当新的,所以任何帮助都是非常感谢的。