Asp.net mvc 2 Unity2属性注入,如何将配置转换为流畅的语法?

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,我会这样配

我有一个httpHandler,我想使用Unity 2将依赖项注入到我的httpHandler中

我的代码如下所示:

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,您有这样的示例吗?还有,为什么我必须建立处理程序?这对我来说是相当新的,所以任何帮助都是非常感谢的。