2010-09-06 72 views
2

我有一個httpHandler和使用Unity 2我想注入一個依賴到我的HttpHandler。Unity 2屬性注入,如何將配置轉換爲流利的語法?

我的代碼如下所示:

public class MyHandler : BaseHandler 
{ 

    public MyHandler() 
    { 
    } 

    public IConfigurationManager Configuration 
    { 
     get; 
     set; 
    } 

    ... 
} 

使用web.config中我將配置像這樣(留出了配置爲簡單的其餘部分):

<type type="MyHandler"> 
    <typeConfig extensionType="Microsoft.Practices.Unity.Configuration.TypeInjectionElement, Microsoft.Practices.Unity.Configuration"> 
     <property name="Configuration" propertyType="IConfigurationManager"> 
     <dependency/> 
     </property> 
    </typeConfig> 
</type> 

我怎麼會去關於使用流利的語法做同樣的事情?我已經嘗試過的所有東西都會在處理程序觸發時將該屬性設置爲null。

謝謝

回答

-1

您必須致電ConfigureInjectionFor方法。

myContainer.Configure<InjectedMembers>() 
    .ConfigureInjectionFor<MyHandler>(
      new InjectionProperty("Configuration", 
            new ResolvedParameter<IConfigurationManager>()) 
           ) 
      ) 

編輯:

這裏是處理程序工廠的一個例子。它允許你創建你的處理器

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; } 
     } 
    } 

然後,你必須在你的web應用程序註冊工廠(允許IIS找到它)。你可以找到更多的細節here

+0

ONOF,出於某種原因,這並不爲我工作。我甚至在配置屬性上嘗試了[Dependency]屬性。注入內部控制器似乎工作得很好,但我無法使用Unity在httphandler中工作。 – Thomas 2010-09-06 10:23:54

+0

這足以配置容器。你需要建立處理程序,例如註冊一個HttpHandlerFactory – onof 2010-09-06 12:33:43

+0

Onof,你有這樣的例子嗎?而且,爲什麼我必須建立處理程序?這對我來說是相當新的,所以任何幫助表示讚賞。 – Thomas 2010-09-06 17:16:12

1

自從Unity 1.2發佈以來,ConfigureInjectionFor已經過時。

這應該工作:

container.RegisterType<MyHandler>(
    new InjectionProperty("Configuration")); 
相關問題