我有一個WCF服務,它調用調用存儲庫的業務組件,並且使用它的WCF工具使用Castle Windsor進行端到端的工作。使用溫莎城堡的WCF依賴注入 - 請幫忙?
WCF Facility註冊和組件註冊的其餘部分發生在這樣的Global.asax文件中。
public class Global : System.Web.HttpApplication { public IWindsorContainer SystemContainer; protected void Application_Start(object sender, EventArgs e) { RegisterDependencies(); } private void RegisterDependencies() { SystemContainer = new WindsorContainer(); SystemContainer.AddFacility<WcfFacility>().Register( Component.For<IBookingRepository>().ImplementedBy<BookingRepository>(), Component.For<IBookingBll>().ImplementedBy<BookingBll>(), Component.For<IBookingService>().ImplementedBy<BookingService>(), Component.For<ILogger>().ImplementedBy<Logger>() ); } }
一切都很好,但現在我需要參考在我的組件之一這個容器,這樣我可以解決其他組件這樣。
public class BookingBll : IBookingBll { private IBookingRepository _repository; private ILogger _logger; public BookingBll(IBookingRepository repository) { _repository = repository; _logger = SystemContainer.Resolve<ILogger>(); // This will not //compile as we can't access a Global class property. } public void Add(Booking booking) { //Some implementation; _logger.Write(); } }
Moreoever我想這個容器可以全局和不想一遍又一遍運行註冊,所以我應該看看在HttpRuntime.Cache shuving這個容器,以便它可以和任何組件都可以把它簡單從緩存中解析並解決他們想要的任何接口。
請原諒我的無知,我是新來的WCF和以及溫莎城堡,整個架構已經shuved我的喉嚨有陡峭的截止日期:-(
你最終在這裏做了什麼?我處於同樣的情況。 – 2011-03-15 10:21:33