我有一个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