1. asp.net整合unity樣本
2. 範例程式碼下載
1. asp.net整合unity樣本
1.1 添加引用,如下:
1.2 在Default.aspx頁面中添加Dependency屬性標籤,表明該屬性是通過依賴注入來產生。如下:
private IStockQuoteService stockQuoteService;
// 添加屬性標籤,表明的是需要注入屬性 [Dependency] public IStockQuoteService StockQuoteService { get { return stockQuoteService; } set { stockQuoteService = value; } }
1.3 添加Global.asax檔案,在Application_Start中建立UnityContainer,並在Application_End函數中將UnityContainer銷毀掉。
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Security;using System.Web.SessionState;namespace StocksTicker{ using Microsoft.Practices.Unity; using Microsoft.Practices.Unity.Configuration; using System.Web.Configuration; using System.Web.UI; public class Global : System.Web.HttpApplication { private const String AppContainerKey = "application container"; private IUnityContainer ApplicationContainer { get { return (IUnityContainer)this.Application[AppContainerKey]; } set { this.Application[AppContainerKey] = value; } } protected void Application_Start(object sender, EventArgs e) { // 在這裡建立一個container IUnityContainer applicationContainer = new UnityContainer(); applicationContainer.LoadConfiguration("application"); ApplicationContainer = applicationContainer; } protected void Application_End(object sender, EventArgs e) { // 銷毀container IUnityContainer applicationContainer = this.ApplicationContainer; if (null != applicationContainer) { applicationContainer.Dispose(); this.ApplicationContainer = null; } } // 這裡實現攔截注入,在頁面中實現注入 protected void Application_PreRequestHandlerExecute(object sender, EventArgs e) { Page handler = HttpContext.Current.Handler as Page; if (null !=handler ) { IUnityContainer container = this.ApplicationContainer ; if ( null != container ) { container.BuildUp(handler.GetType(), handler); } } } }
}
1.4 修改web.xml檔案,增加配置節點configSection和向container中註冊類型,詳細資料參考這裡
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration, Version=2.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<alias alias="TraceSource" type="System.Diagnostics.TraceSource, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> <alias alias="ILogger" type="StocksTicker.Loggers.ILogger, StocksTicker"/> <alias alias="TraceSourceLogger" type="StocksTicker.Loggers.TraceSourceLogger, StocksTicker"/> <alias alias="IStockQuoteService" type="StocksTicker.StockQuoteServices.IStockQuoteService, StocksTicker"/> <alias alias="MoneyCentralStockQuoteService" type="StocksTicker.StockQuoteServices.MoneyCentralStockQuoteService, StocksTicker"/> <container name="application"> <register type="ILogger" mapTo="TraceSourceLogger"> <lifetime type="singleton"/> <constructor> <param name="traceSourceName"> <value value="default"/> </param> </constructor> </register> <register type="IStockQuoteService" mapTo="MoneyCentralStockQuoteService"> <lifetime type="singleton"/> <property name="Logger"/> </register> </container> </unity>
完成asp.net和unity的整合工作。
2. 範例程式碼下載
/Files/xuqiang/entlib/ASPNetStocksTicker.rar