看完TerryLee老师的文章,感觉Castle确实强大,这里我只对自己进行总结,
如果大家感兴趣,请参阅
首先,建立2个接口
public interface ILog { void Write(string MsgStr); }
|
public interface ILogFormatter { string Format(string MsgStr); }
|
这里Ilog是主要执行。ilogformatter只是作为功能显示出现的,ilogformatter的具体实现为
public class TextFormatter : ILogFormatter { public TextFormatter() { }
public string Format(string MsgStr) { return "[" + MsgStr + "]"; }//只是一个读取后输出函数 }
|
看一下主类
public class TextFileLog : ILog { private string _target; private ILogFormatter _format;//这里关联iLogformatter
public TextFileLog(string target,ILogFormatter format)//构造函数 { this._target = target; this._format = format; }
public void Write(string MsgStr)//重新这个函数 { string _MsgStr = _format.Format(MsgStr); _MsgStr += _target; //Output Message Console.WriteLine("Output "+_MsgStr); } }
|
本例使用的是构造函数实现,不过貌似可以通过使用属性方式定义也可,
TextFileLog 的一个内置变量是 ILogFormatter 接口类,并且写入了构造函数之中,这里就做好了关联,而如果程序运行找不到的话,便会报错,当然后面的执行也是因为这个地方而出现,
看下我们的xml配置
<?xml version="1.0" encoding="utf-8" ?> <configuration> <components> <component id="txtLog"> <parameters> <target>Hello Word!> </parameters> </component> </components> <components> <component id="farm1"> <parameters> <target> Hello </target> </parameters> </component> </components> </configuration>
|
这个配置是固定格式的? 呵呵,
他的mian()
public static void Main() { //建立容器 IWindsorContainer container = new WindsorContainer( new XmlInterpreter("../../BasicUsage.xml") ); //加入组件 container.AddComponent( "txtLog", typeof(ILog), typeof(TextFileLog) ); //这里的txtlog,跟我们配置文件的对应 container.AddComponent( "format", typeof(ILogFormatter), typeof(TextFormatter) ); //这里的format 因为没有实际意思 所以可以随便 //获取组件 ILog log = (ILog) container["txtLog"];
//使用组件 log.Write("First Castle IOC Demo"); Console.ReadLine(); }
|
嘎,就完成了,哈哈,虽然只是很短的程序,不过还是看了几个早上,翻阅很多资料才算搞明白,好了,开了头,下面的路就好走了
阅读(752) | 评论(0) | 转发(0) |