Chinaunix首页 | 论坛 | 博客
  • 博客访问: 131881
  • 博文数量: 16
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 520
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-18 09:30
文章分类

全部博文(16)

文章存档

2011年(1)

2009年(9)

2008年(6)

我的朋友

分类: 系统运维

2009-04-14 14:07:15

看完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();
        }

 

嘎,就完成了,哈哈,虽然只是很短的程序,不过还是看了几个早上,翻阅很多资料才算搞明白,好了,开了头,下面的路就好走了

 

阅读(737) | 评论(0) | 转发(0) |
0

上一篇:format的参数

下一篇:ashx文件

给主人留下些什么吧!~~