﻿<?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>博客园-Voidclass@CNBlogs</title><link>http://www.cnblogs.com/voidclass/</link><description>本来无一物 何处染尘埃</description><language>zh-cn</language><lastBuildDate>Wed, 20 Aug 2008 20:00:33 GMT</lastBuildDate><pubDate>Wed, 20 Aug 2008 20:00:33 GMT</pubDate><ttl>60</ttl><item><title>Using NUnit with Visual Studio 2005 Express Editions</title><link>http://www.cnblogs.com/voidclass/archive/2007/08/10/850407.html</link><dc:creator>Voidclass</dc:creator><author>Voidclass</author><pubDate>Fri, 10 Aug 2007 02:54:00 GMT</pubDate><guid>http://www.cnblogs.com/voidclass/archive/2007/08/10/850407.html</guid><wfw:comment>http://www.cnblogs.com/voidclass/comments/850407.html</wfw:comment><comments>http://www.cnblogs.com/voidclass/archive/2007/08/10/850407.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/voidclass/comments/commentRss/850407.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/voidclass/services/trackbacks/850407.html</trackback:ping><description><![CDATA[<ul>
    <li>允许通过Build Toolbar选择"Debug" or "Relese"设置</li>
</ul>
<blockquote>
<p>"工具" -&gt; "选项..." -&gt; 选择"显示所有设置" -&gt; "项目和解决方案" -&gt;选择"显示高级生成配置"</p>
</blockquote>
<ul>
    <li>在VS2k5 Express工程中使用NUnit-GUI测试（以Visual C# 2005 Express为例）</li>
</ul>
<ol>
    <ol>
        <li>创建一个新的类库工程。
        <p align=center><a href="http://www.cnblogs.com/images/cnblogs_com/voidclass/WindowsLiveWriter/UsingNUnitwithVisualStudio2005ExpressEdi_8330/NUnit.1_2.jpg" atomicselection="true"><img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=136 alt=NUnit.1 src="http://www.cnblogs.com/images/cnblogs_com/voidclass/WindowsLiveWriter/UsingNUnitwithVisualStudio2005ExpressEdi_8330/NUnit.1_thumb_2.jpg" width=240 border=0></a></p>
        <li>添加NUnit框架引用。
        <p align=center><a href="http://www.cnblogs.com/images/cnblogs_com/voidclass/WindowsLiveWriter/UsingNUnitwithVisualStudio2005ExpressEdi_8330/NUnit.2.jpg" atomicselection="true"><img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=175 alt=NUnit.2 src="http://www.cnblogs.com/images/cnblogs_com/voidclass/WindowsLiveWriter/UsingNUnitwithVisualStudio2005ExpressEdi_8330/NUnit.2_thumb.jpg" width=240 border=0></a> </p>
        <li>编写测试代码。
        <pre class=code><span style="COLOR: rgb(0,0,255)">using</span> System;
        <span style="COLOR: rgb(0,0,255)">using</span> NUnit.Framework;
        <span style="COLOR: rgb(0,0,255)">namespace</span> NUnitTest
        {
        [TestFixture]
        <span style="COLOR: rgb(0,0,255)">public</span> <span style="COLOR: rgb(0,0,255)">class</span> <span style="COLOR: rgb(43,145,175)">Class1
        </span>    {
        [Test]
        <span style="COLOR: rgb(0,0,255)">public</span> <span style="COLOR: rgb(0,0,255)">void</span> Test1()
        {
        <span style="COLOR: rgb(0,0,255)">int</span> a = 1;
        <span style="COLOR: rgb(0,0,255)">int</span> b = 2;
        <span style="COLOR: rgb(0,0,255)">int</span> sum = a + b;
        Assert.AreEqual(sum, 3);
        }
        }
        }</pre>
        <li>使用NUnit-GUI测试。这一步需要修改.csproj文件，加入下面代码：
        <pre class=code>&lt;PropertyGroup&gt;<br>&nbsp; &lt;Nunit_Path Condition="'$(NUNIT_PATH)' == ''"&gt;C:\Program Files\NUnit 2.4.2&lt;/Nunit_Path&gt;<br>&nbsp; &lt;StartAction&gt;Program&lt;/StartAction&gt;<br>&nbsp; &lt;StartProgram&gt;$(NUNIT_PATH)\bin\nunit.exe&lt;/StartProgram&gt;<br>&nbsp; &lt;StartArguments&gt;/run $(TargetFileName)&lt;/StartArguments&gt;<br>&nbsp; &lt;!--.csproj.user overwrites those values!--&gt;<br>&lt;/PropertyGroup&gt;</pre>
        重新加载工程，F5
        <p align=center><a href="http://www.cnblogs.com/images/cnblogs_com/voidclass/WindowsLiveWriter/UsingNUnitwithVisualStudio2005ExpressEdi_8330/NUnit.3.jpg" atomicselection="true"><img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=151 alt=NUnit.3 src="http://www.cnblogs.com/images/cnblogs_com/voidclass/WindowsLiveWriter/UsingNUnitwithVisualStudio2005ExpressEdi_8330/NUnit.3_thumb.jpg" width=240 border=0></a> </p>
        </li>
    </ol>
</ol>
<img src ="http://www.cnblogs.com/voidclass/aggbug/850407.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41802/" target="_blank">[新闻]微软Office 14即将展开Alpha测试</a>]]></description></item><item><title>MonoDevelop 0.14 on Ubuntu</title><link>http://www.cnblogs.com/voidclass/archive/2007/08/03/841412.html</link><dc:creator>Voidclass</dc:creator><author>Voidclass</author><pubDate>Fri, 03 Aug 2007 03:12:00 GMT</pubDate><guid>http://www.cnblogs.com/voidclass/archive/2007/08/03/841412.html</guid><wfw:comment>http://www.cnblogs.com/voidclass/comments/841412.html</wfw:comment><comments>http://www.cnblogs.com/voidclass/archive/2007/08/03/841412.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/voidclass/comments/commentRss/841412.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/voidclass/services/trackbacks/841412.html</trackback:ping><description><![CDATA[<p>原来一直在Ubuntu 7.04下使用MonoDevelop 0.12，今天偶然发现MonoDevelop已经升级到0.14了。马上升级！！</p>
<p><a title=http://www.getdeb.net/search.php?keywords=monodevelop href="http://www.getdeb.net/search.php?keywords=monodevelop">http://www.getdeb.net/search.php?keywords=monodevelop</a></p>
<img src ="http://www.cnblogs.com/voidclass/aggbug/841412.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41801/" target="_blank">[新闻]《星际争霸2》新图</a>]]></description></item><item><title>使用WLWriter(beta)发布blog</title><link>http://www.cnblogs.com/voidclass/archive/2007/08/02/840433.html</link><dc:creator>Voidclass</dc:creator><author>Voidclass</author><pubDate>Thu, 02 Aug 2007 08:08:00 GMT</pubDate><guid>http://www.cnblogs.com/voidclass/archive/2007/08/02/840433.html</guid><wfw:comment>http://www.cnblogs.com/voidclass/comments/840433.html</wfw:comment><comments>http://www.cnblogs.com/voidclass/archive/2007/08/02/840433.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/voidclass/comments/commentRss/840433.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/voidclass/services/trackbacks/840433.html</trackback:ping><description><![CDATA[<p>我的CNBlogs已经荒废太久了！！</p> <p>使用Windows Live Writer发布blog，试试效果。</p><img src ="http://www.cnblogs.com/voidclass/aggbug/840433.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41800/" target="_blank">[新闻]Google放出Android开发路线图</a>]]></description></item><item><title>Windows Mobile 开发的相关资源</title><link>http://www.cnblogs.com/voidclass/archive/2006/11/22/568177.html</link><dc:creator>Voidclass</dc:creator><author>Voidclass</author><pubDate>Wed, 22 Nov 2006 01:14:00 GMT</pubDate><guid>http://www.cnblogs.com/voidclass/archive/2006/11/22/568177.html</guid><wfw:comment>http://www.cnblogs.com/voidclass/comments/568177.html</wfw:comment><comments>http://www.cnblogs.com/voidclass/archive/2006/11/22/568177.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/voidclass/comments/commentRss/568177.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/voidclass/services/trackbacks/568177.html</trackback:ping><description><![CDATA[看了<a target="_blank" href="http://apan.cnblogs.com/">apan</a>的《<a href="http://www.cnblogs.com/apan/archive/2006/11/21/567843.html" target="_blank">CardViewer系列之准备篇--资源下载推荐</a>》之后，也把自己常用的资料整理一下。<br>
<ul>
    <li><a target="_blank" href="http://www.opennetcf.org/">OpenNETCF.org</a> - OpenNETCF.org的最著名产品就是：Smart Device Framework(SDF)，在.NET CF 1.0的时候，SDF 1.4起到了很好的补充作用，实现了很多.NET CF 1.0不具备的功能。目前，SDF的版本为2.0，对应.NET CF 2.0。其作用及被重视程度已远远不如1.4版本，因为现在.NET CF 2.0的功能已经相当丰富了。<br>现在SDF 2.0有两个版：Community Edition和Extensions
    for Visual Studio。Community Edition是完全免费的，但是在Visual Studio中使用时，没有设计期支持。Extensions for Visual Studio和技术支持是收费的。另外，OpenNETCF.org还提供了一些其他的Lib，比如RAPI的.NET实现等等。</li>
    <li><a target="_blank" href="http://www.gotdotnet.com/codegallery/codegallery.aspx?id=5bef2b5f-476a-488c-8d55-9d41666a36f3">Mobile Client Software Factory</a> - A new patterns &amp; practices Guidance offering to help you build end to end solutions on the Mobile platform.<a target="_blank" href="http://www.microsoft.com/china/msdn/events/Webcasts/shared/Webcast/episode.ASPx?newsID=1242678">相关的Webcast</a>.</li>
    <li><a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=80a5c2c5-4f9b-4c1a-bff6-2a3c6b68d15b&amp;displaylang=en">Mobile Line of Business Solution Accelerator</a>
    - <a href="http://upto.cnblogs.com/" target="_blank">黎波</a>的<a href="http://www.cnblogs.com/upto/archive/2006/08/18/MobileLineofBusinessSolutionAccelerator.html" target="_blank">《行业移动解决方案的葵花宝典？》</a>有更详细的说明。</li>
    <li><a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?familyid=3BAA5B7D-04C1-4EC2-83DC-61B21EC5FE57&amp;displaylang=en">Windows Mobile 5.0 Developer Resource Kit</a></li>
</ul>
apan推荐的几本书都是值得一读的。<br> <img src ="http://www.cnblogs.com/voidclass/aggbug/568177.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41799/" target="_blank">[新闻]番茄花园作者被警方逮捕</a>]]></description></item><item><title>奇怪的构造函数!!!</title><link>http://www.cnblogs.com/voidclass/archive/2006/10/25/539442.html</link><dc:creator>Voidclass</dc:creator><author>Voidclass</author><pubDate>Wed, 25 Oct 2006 05:28:00 GMT</pubDate><guid>http://www.cnblogs.com/voidclass/archive/2006/10/25/539442.html</guid><wfw:comment>http://www.cnblogs.com/voidclass/comments/539442.html</wfw:comment><comments>http://www.cnblogs.com/voidclass/archive/2006/10/25/539442.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/voidclass/comments/commentRss/539442.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/voidclass/services/trackbacks/539442.html</trackback:ping><description><![CDATA[正常情况下，下面的代码：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;ClassLibrary1&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Class1&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;_bFlag;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;Class1()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_bFlag&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}</span></div>
产生的IL代码应该是：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">.method public hidebysig specialname rtspecialname <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instance void&nbsp; .ctor() cil managed<br>{<br>&nbsp; // 代码大小&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 14 (0xe)<br>&nbsp; .maxstack&nbsp; 8<br>&nbsp; IL_0000:&nbsp; ldarg.0<br>&nbsp; IL_0001:&nbsp; call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instance void [mscorlib]System.Object::.ctor()<br>&nbsp; IL_0006:&nbsp; ldarg.0<br>&nbsp; IL_0007:&nbsp; ldc.i4.1<br>&nbsp; IL_0008:&nbsp; stfld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bool ClassLibrary1.Class1::_bFlag<br>&nbsp; IL_000d:&nbsp; ret<br>} // end of method Class1::.ctor</div>
<br><br>可是，我见到这样一段代码：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">.method public hidebysig specialname rtspecialname <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instance void&nbsp; .ctor() cil managed<br>{<br>&nbsp; // 代码大小&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 14 (0xe)<br>&nbsp; .maxstack&nbsp; 2<br>&nbsp; IL_0000:&nbsp; ldarg.0<br>&nbsp; IL_0001:&nbsp; ldc.i4.1<br>&nbsp; IL_0002:&nbsp; stfld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bool ClassLibrary1.Class1::_bFlag<br>&nbsp; IL_0007:&nbsp; ldarg.0<br>&nbsp; IL_0008:&nbsp; call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instance void [mscorlib]System.Object::.ctor()<br>&nbsp; IL_000d:&nbsp; ret<br>} // end of method Class1::.ctor</div>
<br>什么样的C#代码可以生产这样的IL呢？<br>先给变量赋值，然后才调用基类的构造函数。<br><br><span style="COLOR: red">找到原因了！</span><br>谢谢<a id=Comments1_CommentList_ctl02_NameLink href="http://brucenan999.cnblogs.com/" target=_blank><font color=#0066aa>布鲁斯南</font></a>提示。<br>C#代码是这样的：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;ClassLibrary1&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Class1&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;_bFlag&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}</span></div>
这时系统就会先给变量赋值，再去调用基类的构造函数。
<img src ="http://www.cnblogs.com/voidclass/aggbug/539442.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41792/" target="_blank">[新闻]WordPress和Movable Type影响社交网站的未来</a>]]></description></item><item><title>面对今天的Inertnet, 你累吗?</title><link>http://www.cnblogs.com/voidclass/archive/2006/10/09/524441.html</link><dc:creator>Voidclass</dc:creator><author>Voidclass</author><pubDate>Mon, 09 Oct 2006 08:34:00 GMT</pubDate><guid>http://www.cnblogs.com/voidclass/archive/2006/10/09/524441.html</guid><wfw:comment>http://www.cnblogs.com/voidclass/comments/524441.html</wfw:comment><comments>http://www.cnblogs.com/voidclass/archive/2006/10/09/524441.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/voidclass/comments/commentRss/524441.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/voidclass/services/trackbacks/524441.html</trackback:ping><description><![CDATA[<p>首先对<a href="http://twodays.cnblogs.com/"><font color=#223355>被遗弃的小指</font></a>赞一个!!!<br>赞的不仅是他的文章还有他的人品。<br>因为新的项目开始，我两个很菜的问题没有解决，实在不愿意在网上找了，累了。<br>看<a href="http://twodays.cnblogs.com/"><font color=#223355>被遗弃的小指</font></a>的Messenger一直示忙，就发了Email，都得到了耐心、细致回复。谢谢！<br><br>关于Code Snippet的使用问题，如果还有朋友有不清楚的地方，请参考：<br><font face="MS Shell dlg2" size=3><a title=http://www.cnblogs.com/shanyou/archive/2006/08/13/codesnippets.html href="http://www.cnblogs.com/shanyou/archive/2006/08/13/codesnippets.html">http://www.cnblogs.com/shanyou/archive/2006/08/13/codesnippets.html</a><br></font><font face="MS Shell dlg2" size=3><a title=http://www.cnblogs.com/tonyqus/archive/2006/06/29/437928.html href="http://www.cnblogs.com/tonyqus/archive/2006/06/29/437928.html">http://www.cnblogs.com/tonyqus/archive/2006/06/29/437928.html</a><br><br><br>我想说的是面对今天的Inertnet, 你们茫然吗?<br><br>早晨八点上班，带上耳机，响起节奏强劲舞曲。让节拍控制身体，眼前的东西渐渐清晰了。<br>打开Firefox，伴随着Firefox，Gmail、Google Reader、Writely一一跳了出来。看看每个标签上标题，括号里的数字不是三五十就是(100+)。<br>打开Windows Live Mail Desktop，哇！吓我一跳，黑色粗体的Email满屏都是。颤抖的手，不敢去点"News"。<br>打开Maxthon2，屏幕狂闪，呵呵~~ 打开如此之多的标签，以至于我看不清每张网页的标题。摇摇头，昨天还剩下这么多东西没来得及看完呀。。。<br><br>今天又接新项目，应用到的技术又是似乎熟悉却又陌生的。没办法了，把当前Maxthon2的标签存在组里吧，以后再看。<br>Ctrl+T开一个新标签，输入<a href="http://www.google.com/">www.google.com</a> &#8230;&#8230;<br><br>邮件到达提醒、RSS订阅提醒、新闻组、BBS、小企鹅在晃动、小人在闪&#8230;&#8230;<br>我一直是醒着的！</font></p>
<img src ="http://www.cnblogs.com/voidclass/aggbug/524441.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41791/" target="_blank">[新闻]谷歌平台手机获准上市</a>]]></description></item><item><title>关于Pattern的一点联想</title><link>http://www.cnblogs.com/voidclass/archive/2006/09/21/510953.html</link><dc:creator>Voidclass</dc:creator><author>Voidclass</author><pubDate>Thu, 21 Sep 2006 09:00:00 GMT</pubDate><guid>http://www.cnblogs.com/voidclass/archive/2006/09/21/510953.html</guid><wfw:comment>http://www.cnblogs.com/voidclass/comments/510953.html</wfw:comment><comments>http://www.cnblogs.com/voidclass/archive/2006/09/21/510953.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cnblogs.com/voidclass/comments/commentRss/510953.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/voidclass/services/trackbacks/510953.html</trackback:ping><description><![CDATA[<p><em>本来是发在我的个人主页上的，但是想来想去还去发到博客园了。虽然这里是关注.NET技术的，但这是我对&#8220;设计模式&#8221;的一些看法。DUDU路过时看一眼，如果不妥，马上撤。<br></em><br>今天在<a href="http://www.cnblogs.com/" target=_blank>博客园</a>看了<a href="http://terrylee.cnblogs.com/" target=_blank>TerryLee</a>的一篇文章，&#8220;<a href="http://www.cnblogs.com/Terrylee/archive/2005/12/09/293509.html" target=_blank><a href="http://www.cnblogs.com/Terrylee/archive/2005/12/09/293465.html">.NET设计模式（1）：开篇</a></a>&#8221;。看过之后我也想就这个问题写一点东西出来。</p>
<p>提到&#8220;设计模式&#8221;，现在盲目夸大的人或者说盲目的人确实很多。我在招聘场就见过一个人在谈论个人情况的时候，眉飞色舞的讲：&#8220;我会设计模式&#8221;，然后&#8220;背出&#8221;经典的23种设计模式。当时我在想，&#8220;设计模式&#8221;在这个人的心目中是一种技术吗？？</p>
<p>其实我们大多数的程序员都在过去有意或无意中从&#8220;设计模式&#8221;受益。&#8220;告诉一个同事我们是怎么完成了一个包含相当多技巧的程序，这样他就不用从头开始再做一次。&#8221;（《C#设计模式》）每个程序员差不多都有过这个的经历，只不过现在被冠以&#8220;设计模式&#8221;的名字而以。</p>
<p>接下来，我又看了<a href="http://terrylee.cnblogs.com/" target=_blank>TerryLee</a>的第二篇文章，<a href="http://www.cnblogs.com/Terrylee/archive/2005/12/09/293509.html">.NET设计模式（2）：单件模式（Singleton Pattern）</a>文中使用C#来描述Signleton Pattern。详尽、易懂。我见过的&#8220;设计模式&#8221;的文章大多使用C++/C#或Java来描述，感觉太OO了。看这篇文章的时候，我想起了使用Delphi时，关于MDI子窗体单一实例的问题。一般用Delphi做过类似&#8220;进销存&#8221;软件的朋友都有过这样的经历，就是把很多不同的录入窗体、各式各样的查询统计窗体集成在一个MDI Application中。而这时，往往需要子窗体只被创建一次。我们一般是怎么做的哪？</p>
<p>子窗体：</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">unit&nbsp;CFrm;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>uses<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;<img src="http://www.cnblogs.com/Images/dot.gif"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>type<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;TCForm&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">(TForm)<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.cnblogs.com/Images/dot.gif"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;FormClose(Sender:&nbsp;TObject;&nbsp;var&nbsp;Action:&nbsp;TCloseAction);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;end;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>function&nbsp;CForm:&nbsp;TCForm;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>var<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;FCForm:&nbsp;TCForm;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>implementation<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>function&nbsp;CForm:&nbsp;TCForm;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>begin<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;FCForm&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;nil&nbsp;then<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;FCForm&nbsp;:</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;TCForm.Create(Application);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;Result&nbsp;:</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;FCForm;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>end;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img id=Codehighlighter1_333_342_Open_Image onclick="this.style.display='none'; Codehighlighter1_333_342_Open_Text.style.display='none'; Codehighlighter1_333_342_Closed_Image.style.display='inline'; Codehighlighter1_333_342_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_333_342_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_333_342_Closed_Text.style.display='none'; Codehighlighter1_333_342_Open_Image.style.display='inline'; Codehighlighter1_333_342_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_333_342_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_333_342_Open_Text><span style="COLOR: #000000">{&nbsp;TCForm&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>procedure&nbsp;TCForm.FormClose(Sender:&nbsp;TObject;&nbsp;var&nbsp;Action:&nbsp;TCloseAction);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>begin<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;Action&nbsp;:</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;caFree;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;FCForm&nbsp;:</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;nil;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>end;</span></div>
<p>在MDI Application的MainForm中只要使用 CForm.Show(); 就可以了。</p>
<p>虽然不那么OO，但我个人认为归属到Singleton Pattern的范畴。也是可以的。虽然GoF的23种模式很OO，但没人要求&#8220;设计模式&#8221;一定OO。</p>
<p>PS：本文可能会让设计高手不屑，也可能会有很多人质疑。不想口水仗，只是写写我的想法。</p>
<img height=0 src="http://www.voidclass.com/cptrk.ashx?id=c912d8d5-59b9-4a56-9fd0-42111ba53b27" width=0> 
<img src ="http://www.cnblogs.com/voidclass/aggbug/510953.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41790/" target="_blank">[新闻]微软自称传媒公司 强调搜索引擎三大趋势</a>]]></description></item><item><title>Add a HideTabs property to turn on/off the Tabs</title><link>http://www.cnblogs.com/voidclass/archive/2006/09/18/507917.html</link><dc:creator>Voidclass</dc:creator><author>Voidclass</author><pubDate>Mon, 18 Sep 2006 15:36:00 GMT</pubDate><guid>http://www.cnblogs.com/voidclass/archive/2006/09/18/507917.html</guid><wfw:comment>http://www.cnblogs.com/voidclass/comments/507917.html</wfw:comment><comments>http://www.cnblogs.com/voidclass/archive/2006/09/18/507917.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/voidclass/comments/commentRss/507917.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/voidclass/services/trackbacks/507917.html</trackback:ping><description><![CDATA[摘要: From: http://www.dotnetrix.co.uk/tabcontrols.html1usingSystem.ComponentModel;2usingSystem.Drawing;3usingSystem.Windows.Forms;45namespaceDotnetrix.Samples.CSharp6{7[ToolboxBitmap(typeof(System.Windows.&nbsp;&nbsp;<a href='http://www.cnblogs.com/voidclass/archive/2006/09/18/507917.html'>阅读全文</a><img src ="http://www.cnblogs.com/voidclass/aggbug/507917.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41789/" target="_blank">[新闻]亚洲社交网站Friendster将兼容竞争对手窗件</a>]]></description></item><item><title>How to Create a Notify Icon in C# without a form</title><link>http://www.cnblogs.com/voidclass/archive/2006/09/16/505933.html</link><dc:creator>Voidclass</dc:creator><author>Voidclass</author><pubDate>Sat, 16 Sep 2006 06:11:00 GMT</pubDate><guid>http://www.cnblogs.com/voidclass/archive/2006/09/16/505933.html</guid><wfw:comment>http://www.cnblogs.com/voidclass/comments/505933.html</wfw:comment><comments>http://www.cnblogs.com/voidclass/archive/2006/09/16/505933.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/voidclass/comments/commentRss/505933.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/voidclass/services/trackbacks/505933.html</trackback:ping><description><![CDATA[<p>参考: <a href="http://bluehouse.wordpress.com/2006/01/24/how-to-create-a-notify-icon-in-c-without-a-form/">http://bluehouse.wordpress.com/2006/01/24/how-to-create-a-notify-icon-in-c-without-a-form/</a></p>
<p><strong>Tested with .NET Framework 2.0 and Windows XP Professional SP2.</strong></p>
<p>我想创建一个带Notify Icon的应用程序，但是不需要Forms。那么如何编写一个没有窗体的NotifyIcon程序哪？我找到了 <a href="http://bluehouse.wordpress.com/2006/01/24/how-to-create-a-notify-icon-in-c-without-a-form/">http://bluehouse.wordpress.com/2006/01/24/how-to-create-a-notify-icon-in-c-without-a-form/</a>&nbsp;。稍做修改，形成如下代码：</p>
<p>
</p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System;<br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System.Collections.Generic;<br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System.Text;<br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System.Windows.Forms;<br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System.ComponentModel;<br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System.Drawing;<br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Portal<br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">{<br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;IContainer&nbsp;container;<br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;NotifyIcon&nbsp;notifyIcon;<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;Portal()<br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Icon&nbsp;icon&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Icon(SystemIcons.Application,&nbsp;</span><span style="color: #000000;">16</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">16</span><span style="color: #000000;">);<br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.container&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Container();<br></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.notifyIcon&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;NotifyIcon(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.container);<br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.notifyIcon.Icon&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;icon;<br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.notifyIcon.Visible&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Program<br></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">{<br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;[STAThread]<br></span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;Main()<br></span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Portal();<br></span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Application.Run();<br></span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">}</span></div>
<br><img src ="http://www.cnblogs.com/voidclass/aggbug/505933.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41788/" target="_blank">[新闻]百度宣布服务器全面换装闪存 替代硬盘</a>]]></description></item><item><title>Voidclass.com 被关了</title><link>http://www.cnblogs.com/voidclass/archive/2006/04/21/381806.html</link><dc:creator>Voidclass</dc:creator><author>Voidclass</author><pubDate>Fri, 21 Apr 2006 15:23:00 GMT</pubDate><guid>http://www.cnblogs.com/voidclass/archive/2006/04/21/381806.html</guid><wfw:comment>http://www.cnblogs.com/voidclass/comments/381806.html</wfw:comment><comments>http://www.cnblogs.com/voidclass/archive/2006/04/21/381806.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/voidclass/comments/commentRss/381806.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/voidclass/services/trackbacks/381806.html</trackback:ping><description><![CDATA[因为没备案, 被关了...... :-(<br><br>没有没比较好的国外空间推荐??
<img src ="http://www.cnblogs.com/voidclass/aggbug/381806.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41787/" target="_blank">[新闻]诺基亚发布奢华碳纤维版8800 Arte</a>]]></description></item></channel></rss>