﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-</title><link>http://www.cnblogs.com/sifang2004/</link><description>梦想与现实的落差，就是我们离成功的距离！！</description><language>zh-cn</language><lastBuildDate>Fri, 25 Jul 2008 12:47:08 GMT</lastBuildDate><pubDate>Fri, 25 Jul 2008 12:47:08 GMT</pubDate><ttl>60</ttl><item><title>用于样式检测的临时日志(e1c2f313-db73-47f6-8dd1-333bb19f153f - 3bfe001a-32de-4114-a6b4-4005b770f6d7)</title><link>http://www.cnblogs.com/sifang2004/archive/2008/05/09/1190130.html</link><dc:creator>叶漂</dc:creator><author>叶漂</author><pubDate>Fri, 09 May 2008 08:00:00 GMT</pubDate><guid>http://www.cnblogs.com/sifang2004/archive/2008/05/09/1190130.html</guid><wfw:comment>http://www.cnblogs.com/sifang2004/comments/1190130.html</wfw:comment><comments>http://www.cnblogs.com/sifang2004/archive/2008/05/09/1190130.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/sifang2004/comments/commentRss/1190130.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/sifang2004/services/trackbacks/1190130.html</trackback:ping><description><![CDATA[<p>这是一个未删除的临时日志。请手动删除它。(fd51dd91-89ad-4ba6-90ed-b45cc0145b9a - 3bfe001a-32de-4114-a6b4-4005b770f6d7)</p><img src ="http://www.cnblogs.com/sifang2004/aggbug/1190130.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41300/" target="_blank">[新闻]十几万元天价笔记本电脑</a>]]></description></item><item><title>fckeditor的几个问题的解决</title><link>http://www.cnblogs.com/sifang2004/archive/2008/05/09/1190074.html</link><dc:creator>叶漂</dc:creator><author>叶漂</author><pubDate>Fri, 09 May 2008 07:27:00 GMT</pubDate><guid>http://www.cnblogs.com/sifang2004/archive/2008/05/09/1190074.html</guid><wfw:comment>http://www.cnblogs.com/sifang2004/comments/1190074.html</wfw:comment><comments>http://www.cnblogs.com/sifang2004/archive/2008/05/09/1190074.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cnblogs.com/sifang2004/comments/commentRss/1190074.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/sifang2004/services/trackbacks/1190074.html</trackback:ping><description><![CDATA[摘要: FCKEditor几个问题的解决 Fckedtior这款开源的网页富文本编辑器，我们在各个项目中经常用到，以前也碰到些问题，但解决起来都比较容易，网上的解决方案比较多，但在最新的版本（2.6）的应用时，又碰到了一些问题，也许某些问题在先前的版本中也会有，现在稍微总结一下，以免以后碰到类似的问题又忘记了解决的办法，好记性不如烂笔头嘛，不过这句话应该换成好记性不如烂键盘了烂如性，又碰到了一些问题，也许&nbsp;&nbsp;<a href='http://www.cnblogs.com/sifang2004/archive/2008/05/09/1190074.html'>阅读全文</a><img src ="http://www.cnblogs.com/sifang2004/aggbug/1190074.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41300/" target="_blank">[新闻]十几万元天价笔记本电脑</a>]]></description></item><item><title>大家放松下吧,咱家先在首页呆会儿!</title><link>http://www.cnblogs.com/sifang2004/archive/2007/06/07/775793.html</link><dc:creator>叶漂</dc:creator><author>叶漂</author><pubDate>Thu, 07 Jun 2007 13:45:00 GMT</pubDate><guid>http://www.cnblogs.com/sifang2004/archive/2007/06/07/775793.html</guid><wfw:comment>http://www.cnblogs.com/sifang2004/comments/775793.html</wfw:comment><comments>http://www.cnblogs.com/sifang2004/archive/2007/06/07/775793.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://www.cnblogs.com/sifang2004/comments/commentRss/775793.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/sifang2004/services/trackbacks/775793.html</trackback:ping><description><![CDATA[摘要: &nbsp;&nbsp;<a href='http://www.cnblogs.com/sifang2004/archive/2007/06/07/775793.html'>阅读全文</a><img src ="http://www.cnblogs.com/sifang2004/aggbug/775793.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41299/" target="_blank">[新闻]英特尔:四核移动处理器八月推出</a>]]></description></item><item><title>你真的懂我吗？（谈谈C#接口）之一</title><link>http://www.cnblogs.com/sifang2004/archive/2006/07/14/450565.html</link><dc:creator>叶漂</dc:creator><author>叶漂</author><pubDate>Fri, 14 Jul 2006 03:08:00 GMT</pubDate><guid>http://www.cnblogs.com/sifang2004/archive/2006/07/14/450565.html</guid><wfw:comment>http://www.cnblogs.com/sifang2004/comments/450565.html</wfw:comment><comments>http://www.cnblogs.com/sifang2004/archive/2006/07/14/450565.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://www.cnblogs.com/sifang2004/comments/commentRss/450565.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/sifang2004/services/trackbacks/450565.html</trackback:ping><description><![CDATA[<p class=a style="MARGIN: 0cm 0cm 0pt"><font size=5><span class=postbody1><b><span style="FONT-FAMILY: 宋体; mso-ansi-font-size: 16.0pt; mso-bidi-font-size: 16.0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">谈谈</span></b></span><span class=postbody1><b><span lang=EN-US style="mso-ansi-font-size: 16.0pt; mso-bidi-font-size: 16.0pt"><font face=宋体>C#</font></span></b></span><span class=postbody1><b><span style="FONT-FAMILY: 宋体; mso-ansi-font-size: 16.0pt; mso-bidi-font-size: 16.0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中的接口</span></b></span><span class=postbody1><b><span lang=EN-US style="mso-ansi-font-size: 16.0pt; mso-bidi-font-size: 16.0pt"><o:p></o:p></span></b></span></font></p>
<h3 style="MARGIN: 13pt 0cm"><font size=5><span style="COLOR: #ff9900; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口的相关陈述</span><span lang=EN-US style="COLOR: #ff9900"><o:p></o:p></span></font></h3>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">１．一个接口定义了一个契约。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">２．接口可以包容方法、<span lang=EN-US>C#</span>属性、事件、以及索引器。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">３．在一个接口声明中，我们可以声明零个或者多个成员。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">４．所有接口成员的默认访问类型都是<span lang=EN-US>public</span>。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">５．如果在接口成员声明中包括了任何修饰符，那么会产生一个编译器错误。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体">６．与一个非抽象类类似，一个抽象类必须提供接口中所有成员的实现，只要这些成员在这个类的基类中出现过。<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span class=postbody1Verdana><span lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt"><o:p><font face=Verdana>&nbsp;</font></o:p></span></span></p>
<h3 style="MARGIN: 13pt 0cm"><font size=5><span style="COLOR: #ff9900; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口的理解</span><span lang=EN-US style="COLOR: #ff9900"><o:p></o:p></span></font></h3>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span class=postbody1Verdana><span lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: Verdana; mso-fareast-font-family: Verdana"><span style="mso-list: Ignore"><font face=Verdana>1.</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span class=postbody1Verdana><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">面向接口编程利用</span></span><span class=postbody1Verdana><span lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt"><font face=Verdana>OO</font></span></span><span class=postbody1Verdana><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的一个基本性质</span></span><span class=postbody1Verdana><span lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt"><font face=Verdana>——</font></span></span><span class=postbody1Verdana><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">多态，相同方法不同表现。可以这样想一下，</span></span><span class=postbody1Verdana><span lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt"><font face=Verdana>client</font></span></span><span class=postbody1Verdana><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">编写自己程序的时候，如果直接面向一个具体类写程序，那这个程序有个风吹草动的，那</span></span><span class=postbody1Verdana><span lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt"><font face=Verdana>client</font></span></span><span class=postbody1Verdana><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">就要受到影响，但如果面向一个接口就不同了，某个具体类变了，只知接口，不知具体类的</span></span><span class=postbody1Verdana><span lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt"><font face=Verdana>client</font></span></span><span class=postbody1Verdana><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">就可以完全不动。</span></span><span class=postbody1Verdana><span style="FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt"><font face=Verdana> </font></span></span><span class=postbody1Verdana><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">都说上层领导比较好当，因为可以干的事通常对老百姓来说是虚的，越虚就越不容易错。</span></span><span class=postbody1Verdana><span style="FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt"><font face=Verdana> </font></span></span><span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><br></span><span class=postbody1Verdana><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">这个道理在</span></span><span class=postbody1Verdana><span lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt"><font face=Verdana>OO</font></span></span><span class=postbody1Verdana><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">中也是适用的。</span></span><span class=postbody1Verdana><span lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt"><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span class=postbody1><span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体"><span style="mso-list: Ignore">2.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span class=postbody1Verdana><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">换个视角看，面向接口编程反映</span></span><span class=postbody1Verdana><span lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt"><font face=Verdana>OO</font></span></span><span class=postbody1Verdana><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">的另一个方面</span></span><span class=postbody1Verdana><span lang=EN-US style="FONT-SIZE: 10pt; mso-bidi-font-size: 12.0pt"><font face=Verdana>——</font></span></span><span class=postbody1Verdana><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">封装，接口将具体实现封装了起来，可以不影响客户的情况下切换实现</span></span><span class=postbody1><span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt"><span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体"><span style="mso-list: Ignore">3.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: Tahoma">接口的作用，一言以蔽之，就是标志类的类别（<span lang=EN-US>type&nbsp;of&nbsp;class</span>）。把不同类型的类归于不同的接口，可以更好的管理他们。<span lang=EN-US>OO</span>的精髓，我以为，是对对象的抽象，最能体现这一点的就是接口。为什么我们讨论设计模式都只针对具备了抽象能力的语言（比如<span lang=EN-US>c++</span>、<span lang=EN-US>java</span>、<span lang=EN-US>c#</span>等），就是因为设计模式所研究的，实际上就是如何合理的去抽象。（<span lang=EN-US>cowboy</span>的名言是<span lang=EN-US>&#8220;</span>抽象就是抽去像的部分<span lang=EN-US>&#8221;</span>，看似调侃，实乃至理）。</span><span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Tahoma"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><a name=1></a><span class=3Char><span style="FONT-SIZE: 15pt; COLOR: #ff9900; mso-bidi-font-size: 16.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><strong><font face=宋体>空接口的使用</font></strong></span></span><span lang=EN-US><br></span><span class=10Char0><span style="FONT-SIZE: 10pt"><font face=宋体>在接口使用的时候<span lang=EN-US>,</span>空接口有<span lang=EN-US>2</span>种情况</font><font face=宋体><span lang=EN-US>:<br>1.</span>类似于<span lang=EN-US>ObjectBuilder</span>中的</font></span></span><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">IBuilderPolicy</span><font face=宋体><span class=10Char0><span lang=EN-US style="FONT-SIZE: 10pt">,</span></span><span class=10Char0><span style="FONT-SIZE: 10pt">他们往往是做一个标记<span lang=EN-US>,</span>表示需要某个功能<span lang=EN-US>.</span>当然你也可以这么用<span lang=EN-US>,</span>来表示你的类具有某个功能<span lang=EN-US>,</span>实现了你的某个接口<span lang=EN-US>.<o:p></o:p></span></span></span></font></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">namespace</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"> Microsoft.Practices.ObjectBuilder<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">{<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: gray">///</span><span style="COLOR: green"> </span><span style="COLOR: gray">&lt;summary&gt;<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: gray">///</span><span style="COLOR: green"> Represents a builder policy interface. Since there are no fixed requirements<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: gray">///</span><span style="COLOR: green"> for policies, it acts as a marker interface from which to derive all other<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: gray">///</span><span style="COLOR: green"> policy interfaces.<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: gray">///</span><span style="COLOR: green"> </span><span style="COLOR: gray">&lt;/summary&gt;<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">interface</span> <span style="COLOR: teal">IBuilderPolicy<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes">}</span><span class=10Char><b><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-bidi-font-size: 10.0pt; mso-font-kerning: 0pt"><o:p></o:p></span></b></span></p>
<p class=101 style="MARGIN: 0cm 0cm 6pt"><span class=10Char><b><span lang=EN-US style="mso-bidi-font-size: 10.0pt"><o:p><font face=宋体 size=2>&nbsp;</font></o:p></span></b></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><font face=宋体><span class=10Char><span lang=EN-US style="FONT-SIZE: 10pt">2.</span></span><span class=10Char><span style="FONT-SIZE: 10pt">你的接口继承了别的接口<span lang=EN-US>(</span>非空<span lang=EN-US>),</span>你的接口本身没有声明函数<span lang=EN-US>.</span>这种情况一般是你不希望用户使用父接口作为参数类型<span lang=EN-US>,</span>因为他们的用途可能不同<span lang=EN-US>,</span>此时就可以用空接口来实现<span lang=EN-US>.</span></span></span></font><span lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"> <o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes">interface</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"> <span style="COLOR: teal">Text<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes">{<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">string</span> getText();<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes">}<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"><o:p>&nbsp;</o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes">interface</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"> <span style="COLOR: teal">SqlText</span> : <span style="COLOR: teal">Text<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes">{ <o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes">}</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">可以看到<span lang=EN-US>,Text</span>接口是用于返回一个字符串<span lang=EN-US>.</span>而<span lang=EN-US>SqlText</span>是一个</span><font face=宋体><span class=10Char0><span style="FONT-SIZE: 10pt">空接口</span></span><span lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">,</span></font><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">它继承了<span lang=EN-US>Text</span>接口<span lang=EN-US>.</span>也就是说<span lang=EN-US>SqlText</span>也是一种<span lang=EN-US>Text.</span>但是我们可以知道<span lang=EN-US>,</span>任何一个字符串不一定是<span lang=EN-US>Sql</span>字符串<span lang=EN-US>,</span>所以此时声明了一个<span lang=EN-US>SqlText</span>接口来用于表名当前的字符串是一个<span lang=EN-US>Sql</span>字符串<span lang=EN-US>.</span>你的函数可以这样声明<span lang=EN-US>: <o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">public</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"> <span style="COLOR: blue">void</span> doQuery(<span style="COLOR: teal">SqlText</span> sqlText)</span><span lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">而不是这样：<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">public</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"> <span style="COLOR: blue">void</span> doQuery(<span style="COLOR: teal">Text</span> text)</span><span lang=EN-US style="FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">避免用户产生歧义的想法<span lang=EN-US>,</span>一眼看去<span lang=EN-US>,</span>就明白应该传入一个<span lang=EN-US>Sql</span>字符串<span lang=EN-US>.<o:p></o:p></span></span></p>
<h3 style="MARGIN: 13pt 0cm"><font size=5><span style="COLOR: #ff9900; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口的成员为什么没有委托</span><span lang=EN-US style="COLOR: #ff9900"><o:p></o:p></span></font></h3>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><font face=宋体><span lang=EN-US><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我们都知道</span><span lang=EN-US style="FONT-SIZE: 10pt">C#</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的接口是可以包含事件的，其实当我们看到事件的时候，很容易就会想到委托，委托是事件的基础，如果对委托和事件不是特别清楚的程序员就一定不会明白，为什么</span><span lang=EN-US style="FONT-SIZE: 10pt">C#</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口中可以包含事件而不能有委托呢。其实简单的说法就是委托也是类型，</span><span lang=EN-US style="FONT-SIZE: 10pt">delegate</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关键字引入的是一个新的类型，所以一个</span><span lang=EN-US style="FONT-SIZE: 10pt">C#</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口无法包容一个委托并把它当作成员；而</span><span lang=EN-US style="FONT-SIZE: 10pt">event</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关键字引入的是一个新的成员，因此事件可以归人接口。理解这点，我们要从</span><span lang=EN-US style="FONT-SIZE: 10pt">C#</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口的使命说起，</span><span lang=EN-US style="FONT-SIZE: 10pt">C#</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口是一个契约，规范了接口实现者的行为，而不是要有些什么。很简单，例如&#8220;党员&#8221;是个接口，它肯定有个动作是&#8220;为人民服务&#8221;，&#8220;某某党员&#8221;实现了&#8220;党员&#8221;这个接口，那么&#8220;某某党员&#8221;肯定也要&#8220;为人民服务&#8221;，至于你&#8220;某某党员&#8221;是否必须拥用&#8220;电脑&#8221;、&#8220;小孩&#8221;。那么&#8220;党员&#8221;这个接口中肯定不会有规定。这也就是接口的目的，规范了实现者的一些行为。所以</span><span lang=EN-US style="FONT-SIZE: 10pt">C#</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口的成员都是方法，不会有其它了。稍有</span><span lang=EN-US style="FONT-SIZE: 10pt">c#</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">常识的程序员都明白，</span><span lang=EN-US style="FONT-SIZE: 10pt">c#</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的属性，其实就是两个方法，一个</span><span lang=EN-US style="FONT-SIZE: 10pt">Set</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法，一个</span><span lang=EN-US style="FONT-SIZE: 10pt">Get</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法，同样事件和索引器也都是方法，请看下面的接口：</span></font><span lang=EN-US style="FONT-SIZE: 10pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes">public</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"> <span style="COLOR: blue">interface</span> <span style="COLOR: teal">IDrawingObject<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">event</span> <span style="COLOR: teal">EventHandler</span> OnDraw;<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">string</span> Name<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">get</span>;<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">set</span>;<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">int</span> <span style="COLOR: blue">this</span>[<span style="COLOR: blue">int</span> index]<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">get</span>;<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">set</span>;<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">void</span> SetValue();<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>}</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-bidi-font-size: 10.0pt; mso-font-kerning: 0pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">该接口包含了</span><font face=宋体><span lang=EN-US style="FONT-SIZE: 10pt">c#</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口所能接纳的所有成员，事件，属性，索引器，方法。把该接口编译后，我们用</span><span lang=EN-US style="FONT-SIZE: 10pt">MSIL Disassembler</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">工具查看一下：</span></font><span lang=EN-US style="FONT-SIZE: 10pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt"><v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><img alt="" src="http://www.cnblogs.com/images/cnblogs_com/sifang2004/200671401.JPG" border=0><br><br>这下大家都明白了，其实属性</span><font face=宋体><span lang=EN-US style="FONT-SIZE: 10pt">Name</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对应于</span><span lang=EN-US style="FONT-SIZE: 10pt">Get_Name(),Set_Name()</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这两个方法，事件</span><span lang=EN-US style="FONT-SIZE: 10pt">OnDraw</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对应于</span><span lang=EN-US style="FONT-SIZE: 10pt">add_OnDraw(),remove_OnDraw()</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这两个方法，索引器对应于</span><span lang=EN-US style="FONT-SIZE: 10pt">get_Item(),set_Item()</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这两个方法。在看下面的委托和类的定义：</span></font><span lang=EN-US style="FONT-SIZE: 10pt"><o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes">public</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"> <span style="COLOR: blue">delegate</span> <span style="COLOR: blue">void</span> <span style="COLOR: teal">TestEventDelegate</span>(<span style="COLOR: blue">object</span> sender, System.<span style="COLOR: teal">EventArgs</span> e);<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes">class</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"> <span style="COLOR: teal">TestClass<o:p></o:p></span></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>{<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">public</span> <span style="COLOR: blue">void</span> SetValue()<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{ }<o:p></o:p></span></p>
<p class=MsoNormal style="BACKGROUND: #e6e6e6; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 新宋体; mso-font-kerning: 0pt; mso-no-proof: yes">}<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><img alt="" src="http://www.cnblogs.com/images/cnblogs_com/sifang2004/200671402.JPG" border=0><br><br>看到了吧，定义一个委托和定义一个类是没有什么区别的，都是定义了个新的类型。所以</span><font face=宋体><span lang=EN-US style="FONT-SIZE: 10pt">C#</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口是不能有委托的，除非微软告诉我们</span><span lang=EN-US style="FONT-SIZE: 10pt">C#</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口中是可以定义类的。</span></font><span lang=EN-US style="FONT-SIZE: 10pt"><o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 10pt"><o:p><font face=宋体>&nbsp;</font></o:p></span></p>
<img src ="http://www.cnblogs.com/sifang2004/aggbug/450565.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41297/" target="_blank">[新闻]杨致远：孤独的守护人</a>]]></description></item><item><title>Visual Studio 2005插件开发</title><link>http://www.cnblogs.com/sifang2004/archive/2006/06/27/436630.html</link><dc:creator>叶漂</dc:creator><author>叶漂</author><pubDate>Tue, 27 Jun 2006 01:55:00 GMT</pubDate><guid>http://www.cnblogs.com/sifang2004/archive/2006/06/27/436630.html</guid><wfw:comment>http://www.cnblogs.com/sifang2004/comments/436630.html</wfw:comment><comments>http://www.cnblogs.com/sifang2004/archive/2006/06/27/436630.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://www.cnblogs.com/sifang2004/comments/commentRss/436630.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/sifang2004/services/trackbacks/436630.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; <font size=2>我这所说的插件，是使用在Visual Studio 2005之上的插件，也就在MSDN说所说的外接程序，一般开发人员涉及这方面的开发是比较少的，对插件开发比较陌生，而且更多开发人员认为开发插件是比较高深的技术，只有高手才做那方面的开发，当初我真是如此认为的，但真正开发过插件了，发现在visual studio 2005中开发插件还是比较简单的，而且，因为自己开发的插件让自己编程生活更加轻松与方便，毕竟这是一个崇尚DIY的年代：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 通过下面这两篇文章，应该是每个开发人员都可以开发出自己需要的插件来。</font><br><br><font color=blue><a href="http://sifang2004.cnblogs.com/archive/2006/06/26/436128.html"><strong style="FONT-SIZE: 12pt"><span style="COLOR: #0000ff">代码行数统计插件（一）</span></strong></a><span style="COLOR: #0000ff"> <br></span><a href="http://sifang2004.cnblogs.com/archive/2006/06/26/436178.html"><strong style="FONT-SIZE: 12pt"><span style="COLOR: #0000ff">代码行数统计插件（二）</span></strong></a><span style="COLOR: #0000ff"> <br></span><a href="http://sifang2004.cnblogs.com/archive/2006/06/09/421723.html"><strong style="FONT-SIZE: 12pt"><span style="COLOR: #0000ff">VB.NET-C#语言转换插件</span></strong></a><span style="COLOR: #0000ff"> </span></font><br><br><span style="FONT-SIZE: 10pt">另外推荐下，上面那个代码行数统计插件是个非常有用的东东，至于为什么，去看看就明白了！！</span>&nbsp;&nbsp;&nbsp;&nbsp;<br><br><span style="FONT-SIZE: 10pt; COLOR: #ff00ff">还有就是昨天发表的《代码行数统计器插件》引用的图片居然是本机的，园友告之我说图片显示不出来，我还振振有词的跟他说，可能是网速太慢了，&#8220;<font style="FONT-SIZE: 10pt; COLOR: #ff00ff" color=#000000 size=3>这个图片引用 出自程序员之手 也太牛了点&#8221;，实在是丢人丢大发了！给大家带来了不便，对大家说声抱歉，下次不会犯这样的低级错误了！！</font></span><br><br>&nbsp;&nbsp;&nbsp;&nbsp; 
<img src ="http://www.cnblogs.com/sifang2004/aggbug/436630.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41298/" target="_blank">[新闻]SourceForge可正常访问</a>]]></description></item><item><title>Visual Studio 2005插件开发（代码行数统计器）之二</title><link>http://www.cnblogs.com/sifang2004/archive/2006/06/26/436178.html</link><dc:creator>叶漂</dc:creator><author>叶漂</author><pubDate>Mon, 26 Jun 2006 09:26:00 GMT</pubDate><guid>http://www.cnblogs.com/sifang2004/archive/2006/06/26/436178.html</guid><wfw:comment>http://www.cnblogs.com/sifang2004/comments/436178.html</wfw:comment><comments>http://www.cnblogs.com/sifang2004/archive/2006/06/26/436178.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/sifang2004/comments/commentRss/436178.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/sifang2004/services/trackbacks/436178.html</trackback:ping><description><![CDATA[摘要: 原文：http://www.codeproject.com/useritems/LineCounterAddin.asp注意：1.本文中的提到的&#8220;外接程序&#8221;等同与&#8220;插件程序&#8221;2.本文提供的源码是在原作的基础上有过修改。代码行数统计器（一）：http://sifang2004.cnblogs.com/archive/2006/06/26/436128.&nbsp;&nbsp;<a href='http://www.cnblogs.com/sifang2004/archive/2006/06/26/436178.html'>阅读全文</a><img src ="http://www.cnblogs.com/sifang2004/aggbug/436178.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41295/" target="_blank">[新闻]2008年7月25日IT博客精选</a>]]></description></item><item><title>Visual Studio 2005 插件编程（代码行数统计插件）之一</title><link>http://www.cnblogs.com/sifang2004/archive/2006/06/26/436128.html</link><dc:creator>叶漂</dc:creator><author>叶漂</author><pubDate>Mon, 26 Jun 2006 08:53:00 GMT</pubDate><guid>http://www.cnblogs.com/sifang2004/archive/2006/06/26/436128.html</guid><wfw:comment>http://www.cnblogs.com/sifang2004/comments/436128.html</wfw:comment><comments>http://www.cnblogs.com/sifang2004/archive/2006/06/26/436128.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://www.cnblogs.com/sifang2004/comments/commentRss/436128.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/sifang2004/services/trackbacks/436128.html</trackback:ping><description><![CDATA[摘要: 原文：http://www.codeproject.com/useritems/LineCounterAddin.asp注意：1.本文中的提到的&#8220;外接程序&#8221;等同与&#8220;插件程序&#8221;2.本文提供的源码是在原作的基础上有过修改。代码行数统计器（二）：http://sifang2004.cnblogs.com/archive/2006/06/26/436178.&nbsp;&nbsp;<a href='http://www.cnblogs.com/sifang2004/archive/2006/06/26/436128.html'>阅读全文</a><img src ="http://www.cnblogs.com/sifang2004/aggbug/436128.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41295/" target="_blank">[新闻]2008年7月25日IT博客精选</a>]]></description></item><item><title>Visual Studio 2005 插件编程（代码行数统计插件）</title><link>http://www.cnblogs.com/sifang2004/archive/2006/06/26/436076.html</link><dc:creator>叶漂</dc:creator><author>叶漂</author><pubDate>Mon, 26 Jun 2006 08:17:00 GMT</pubDate><guid>http://www.cnblogs.com/sifang2004/archive/2006/06/26/436076.html</guid><wfw:comment>http://www.cnblogs.com/sifang2004/comments/436076.html</wfw:comment><comments>http://www.cnblogs.com/sifang2004/archive/2006/06/26/436076.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cnblogs.com/sifang2004/comments/commentRss/436076.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/sifang2004/services/trackbacks/436076.html</trackback:ping><description><![CDATA[摘要: 原文：http://www.codeproject.com/useritems/LineCounterAddin.asp注意：1.本文中的提到的&#8220;外接程序&#8221;等同与&#8220;插件程序&#8221;2.本文提供的源码是在原作的基础上有过修改。源码：http://www.cnblogs.com/Files/sifang2004/LineCounterAddin.rar代码行数&nbsp;&nbsp;<a href='http://www.cnblogs.com/sifang2004/archive/2006/06/26/436076.html'>阅读全文</a><img src ="http://www.cnblogs.com/sifang2004/aggbug/436076.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41295/" target="_blank">[新闻]2008年7月25日IT博客精选</a>]]></description></item><item><title>VS2003中基于Word2003编程</title><link>http://www.cnblogs.com/sifang2004/archive/2006/06/15/426773.html</link><dc:creator>叶漂</dc:creator><author>叶漂</author><pubDate>Thu, 15 Jun 2006 10:24:00 GMT</pubDate><guid>http://www.cnblogs.com/sifang2004/archive/2006/06/15/426773.html</guid><wfw:comment>http://www.cnblogs.com/sifang2004/comments/426773.html</wfw:comment><comments>http://www.cnblogs.com/sifang2004/archive/2006/06/15/426773.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cnblogs.com/sifang2004/comments/commentRss/426773.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/sifang2004/services/trackbacks/426773.html</trackback:ping><description><![CDATA[摘要: VS2003中基于Word2003编程 曾经编译过一篇《用Visual Studio .NET自动化MS Word》，那是基于Word2000的，其实由于我跟这方面打交道不是太多，所以也就没有继续研究过了，昨天一位园友针对那文章提了个问题&#8220;我现在需要的是把一个文档的内容拷到另外一个文档内容之后，先把第一个文档调动内容复制到剪贴板上了，但下面应该怎么把粘贴位置定位到另一个文档之后呢？&#&nbsp;&nbsp;<a href='http://www.cnblogs.com/sifang2004/archive/2006/06/15/426773.html'>阅读全文</a><img src ="http://www.cnblogs.com/sifang2004/aggbug/426773.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41292/" target="_blank">[新闻]微软称Windows 7开发很顺利 IE 8年底上市</a>]]></description></item><item><title>DI(依赖注入)</title><link>http://www.cnblogs.com/sifang2004/archive/2006/06/13/424645.html</link><dc:creator>叶漂</dc:creator><author>叶漂</author><pubDate>Tue, 13 Jun 2006 03:26:00 GMT</pubDate><guid>http://www.cnblogs.com/sifang2004/archive/2006/06/13/424645.html</guid><wfw:comment>http://www.cnblogs.com/sifang2004/comments/424645.html</wfw:comment><comments>http://www.cnblogs.com/sifang2004/archive/2006/06/13/424645.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/sifang2004/comments/commentRss/424645.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/sifang2004/services/trackbacks/424645.html</trackback:ping><description><![CDATA[摘要: 原文：http://msdn.microsoft.com/msdnmag/issues/05/09/DesignPatterns/default.aspx#contents#contents 依赖注入 今天比以往更加注重对现有组件的重用和把异构组件联结成一种粘合框架。但是这种联结很快就成了一项让人畏缩的任务，因为这个时候程序的尺寸和复杂度都在增加，依赖性也是。减少这种依赖性扩展的一个方法就是使用依&nbsp;&nbsp;<a href='http://www.cnblogs.com/sifang2004/archive/2006/06/13/424645.html'>阅读全文</a><img src ="http://www.cnblogs.com/sifang2004/aggbug/424645.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41291/" target="_blank">[新闻]中国SNS捱过严冬 未来十八个月决定SNS生死</a>]]></description></item></channel></rss>