技术开发 频道

Castle IOC容器实践之Startable Facility(一)


【IT168技术文档】

  摘要:从本文开始,我们将逐一实践Castle IOC中的Facility,在前面我们说过,Facility它是带有注入性质的。有时我们会遇到这样的问题,当一个组件满足一定的依赖关系之后,让它自动运行,比如说启动一个窗体或者启动某种服务,本文我们就来看如何使用Startable Facility让一个实现了接口IStartable的组件自动运行,以及不实现IStartable接口的组件如何在满足依赖后自动运行。



  主要内容

  1.Startable Facility概述

  2.实现IStartable接口使用详解

  3.不实现IStartable接口使用



  一.Startable Facility概述

  在开始使用Startable Facility之前,我们先了解一下它做了什么事情,它可以让一个组件在满足依赖关系之后自动启动或者停止。官方网站中提供的Startable Facility的有关信息:

  二.实现IStartable接口使用详解

  Startable Facility的使用可以说是非常地简单,只要我们的组件实现了IStartable接口就可以了。现在我们还有一个Program类,它专门控制 Server的启动和停止,我们希望在它的依赖关系满足后,让Server自动启动。很简单,我们让Program类实现IStartable接口:
/// <summary> /// </summary> public class Program : IStartable { private Server _server; public Program(Server server) { this._server = server; } public void Start() { _server.Start(); } public void Stop() { _server.Stop(); } }
  注意这个里面的Start()和Stop()方法就是要实现接口中的方法,我们在Start()方法中启动服务器,在Stop()方法中停止服务器。并且这个类依赖于Server类,也就是要满足它的依赖关系,还需要有一个Server组件。服务器Server,它需要一个Host和Port:
/// <summary> /// </summary> public class Server { private string _host; private int _port; public Server(string host,int port) { this._host = host; this._port = port; } public void Start() { Console.WriteLine("Server {0}:{1} Start",_host,_port); Console.ReadLine(); } public void Stop() { Console.WriteLine("Server {0}:{1} Stop",_host,_port); Console.ReadLine(); } }
0
相关文章