看完TerryLee老师的文章,感觉Castle确实强大,这里我只对自己进行总结,
如果大家感兴趣,请参阅
http://www.cnblogs.com/Terrylee/archive/2006/04/28/387503.html
首先,建立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!
|