<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.2" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Tech-Note For DKMILAN™</title>
	<link>http://dkmilan.72pines.com</link>
	<description>It's My Tech-Note</description>
	<pubDate>Sun, 09 Nov 2008 01:36:55 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.2</generator>
	<language>en</language>
			<item>
		<title>SPINN上市了。。。价格。。。残念啊</title>
		<link>http://dkmilan.72pines.com/2008/10/31/spinn%e4%b8%8a%e5%b8%82%e4%ba%86%e3%80%82%e3%80%82%e3%80%82%e4%bb%b7%e6%a0%bc%e3%80%82%e3%80%82%e3%80%82%e6%ae%8b%e5%bf%b5%e5%95%8a/</link>
		<comments>http://dkmilan.72pines.com/2008/10/31/spinn%e4%b8%8a%e5%b8%82%e4%ba%86%e3%80%82%e3%80%82%e3%80%82%e4%bb%b7%e6%a0%bc%e3%80%82%e3%80%82%e3%80%82%e6%ae%8b%e5%bf%b5%e5%95%8a/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 07:05:23 +0000</pubDate>
		<dc:creator>dkmilan</dc:creator>
		
		<category><![CDATA[Iriver]]></category>

		<category><![CDATA[数码玩物]]></category>

		<category><![CDATA[艾利和]]></category>

		<guid isPermaLink="false">http://dkmilan.72pines.com/2008/10/30/spinn%e4%b8%8a%e5%b8%82%e4%ba%86%e3%80%82%e3%80%82%e3%80%82%e4%bb%b7%e6%a0%bc%e3%80%82%e3%80%82%e3%80%82%e6%ae%8b%e5%bf%b5%e5%95%8a/</guid>
		<description><![CDATA[Iriver的新机皇终于来到国内了。
真是想买啊。。。。问题是价格。。。残念
行货价格4GB版本SPINN ￥ 15498GB版本SPINN ￥1799

真是抢钱啊。。。。我还是贴几个图纪念一下08年唯一让我真正动心的PMP吧。。。这东西就在我败了E100之后出来的，看了新闻之后那叫一个个后悔。。。不过就算这东西出的早一个两个月，我还是买不起地。。。。
算了，继续发图，留着以后瞻仰
 
操作方式很后现代，是旋转这个柱子

操作界面超赞

帅呆了的3.3英寸AMOLED触摸屏幕
&#160; 
 
MS这个是全家福？圆圆的盒子难道是装SPINN的？？？

No tag for this post.]]></description>
			<content:encoded><![CDATA[<p>Iriver的新机皇终于来到国内了。</p>
<p>真是想买啊。。。。问题是价格。。。残念</p>
<blockquote><p>行货价格<br />4GB版本SPINN ￥ 1549<br />8GB版本SPINN ￥1799</p>
</blockquote>
<p><font color="#555555">真是抢钱啊。。。。我还是贴几个图纪念一下08年唯一让我真正动心的PMP吧。。。这东西就在我败了E100之后出来的，看了新闻之后那叫一个个后悔。。。不过就算这东西出的早一个两个月，我还是买不起地。。。。</font></p>
<p><font color="#555555">算了，继续发图，留着以后瞻仰</font></p>
<p><a href="http://dkmilan.72pines.com/files/2008/10/iriver-spinn-pmp.jpg"><img height="244" alt="iriver-spinn-pmp" src="http://dkmilan.72pines.com/files/2008/10/iriver-spinn-pmp-thumb.jpg" width="244" border="0"></a> </p>
<p>操作方式很后现代，是旋转这个柱子</p>
<p><a href="http://dkmilan.72pines.com/files/2008/10/cehb5nwfshjr.jpg"><img height="272" alt="cehb5NwFShJr" src="http://dkmilan.72pines.com/files/2008/10/cehb5nwfshjr-thumb.jpg" width="426" border="0"></a></p>
<p>操作界面超赞</p>
<p><a href="http://dkmilan.72pines.com/files/2008/10/iriver-spinn.jpg"><img height="222" alt="iRiver-Spinn" src="http://dkmilan.72pines.com/files/2008/10/iriver-spinn-thumb.jpg" width="363" border="0"></a></p>
<p>帅呆了的3.3英寸AMOLED触摸屏幕</p>
<p><a href="http://dkmilan.72pines.com/files/2008/10/cerqc4yassdgy.jpg"><img height="267" alt="cerQC4YasSDGY" src="http://dkmilan.72pines.com/files/2008/10/cerqc4yassdgy-thumb.jpg" width="422" border="0"></a>&nbsp; </p>
<p><a href="http://dkmilan.72pines.com/files/2008/10/ce4aknanyudxs.jpg"><img height="261" alt="ce4aKNaNYudXs" src="http://dkmilan.72pines.com/files/2008/10/ce4aknanyudxs-thumb.jpg" width="412" border="0"></a> </p>
<p>MS这个是全家福？圆圆的盒子难道是装SPINN的？？？</p>
<p><a href="http://dkmilan.72pines.com/files/2008/10/iriver.jpg"><img height="287" alt="iriver" src="http://dkmilan.72pines.com/files/2008/10/iriver-thumb.jpg" width="456" border="0"></a></p>
No tag for this post.]]></content:encoded>
			<wfw:commentRss>http://dkmilan.72pines.com/2008/10/31/spinn%e4%b8%8a%e5%b8%82%e4%ba%86%e3%80%82%e3%80%82%e3%80%82%e4%bb%b7%e6%a0%bc%e3%80%82%e3%80%82%e3%80%82%e6%ae%8b%e5%bf%b5%e5%95%8a/feed/</wfw:commentRss>
		</item>
		<item>
		<title>有心，无极限&#8212;&#8212;优秀的可定制美化软件Samurize</title>
		<link>http://dkmilan.72pines.com/2008/10/30/%e6%9c%89%e5%bf%83%ef%bc%8c%e6%97%a0%e6%9e%81%e9%99%90%e4%bc%98%e7%a7%80%e7%9a%84%e5%8f%af%e5%ae%9a%e5%88%b6%e7%be%8e%e5%8c%96%e8%bd%af%e4%bb%b6samurize/</link>
		<comments>http://dkmilan.72pines.com/2008/10/30/%e6%9c%89%e5%bf%83%ef%bc%8c%e6%97%a0%e6%9e%81%e9%99%90%e4%bc%98%e7%a7%80%e7%9a%84%e5%8f%af%e5%ae%9a%e5%88%b6%e7%be%8e%e5%8c%96%e8%bd%af%e4%bb%b6samurize/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 07:44:23 +0000</pubDate>
		<dc:creator>dkmilan</dc:creator>
		
		<category><![CDATA[执著美化]]></category>

		<category><![CDATA[精彩小软]]></category>

		<category><![CDATA[系统优化]]></category>

		<guid isPermaLink="false">http://dkmilan.72pines.com/2008/10/30/%e6%9c%89%e5%bf%83%ef%bc%8c%e6%97%a0%e6%9e%81%e9%99%90%e4%bc%98%e7%a7%80%e7%9a%84%e5%8f%af%e5%ae%9a%e5%88%b6%e7%be%8e%e5%8c%96%e8%bd%af%e4%bb%b6samurize/</guid>
		<description><![CDATA[呃。。。我承认我很孤陋寡闻，刚刚开始玩Samurize。Samurize的全称是Serious Samurize。从搜索结果上看，似乎曾经在国内流行过，大概是2001年~2003年吧，不过Samurize现在在国内已经不流行了，很久很久看不到Themex、先锋以及远景上面有关于Samurize的帖子。但是在国外Samurize还是有很大的用户群的。我用了一下真是大呼过瘾，优秀的功能，极强悍的扩展性，WYSIWYG的编辑界面。的确是美化界的利器，不知道为什么国内的美化玩家都放弃了Samurize。比起国内的鱼鱼，八戒以及国外的Vista Sidebar，Samurize只强不弱。所有这些软件能实现的功能，使用Samurize都可以实现，而且内存占用更小。
贴几个桌面截图出来看看
&#160;
 
No tag for this post.]]></description>
			<content:encoded><![CDATA[<p>呃。。。我承认我很孤陋寡闻，刚刚开始玩Samurize。Samurize的全称是Serious Samurize。从搜索结果上看，似乎曾经在国内流行过，大概是2001年~2003年吧，不过Samurize现在在国内已经不流行了，很久很久看不到Themex、先锋以及远景上面有关于Samurize的帖子。但是在国外Samurize还是有很大的用户群的。我用了一下真是大呼过瘾，优秀的功能，极强悍的扩展性，WYSIWYG的编辑界面。的确是美化界的利器，不知道为什么国内的美化玩家都放弃了Samurize。比起国内的鱼鱼，八戒以及国外的Vista Sidebar，Samurize只强不弱。所有这些软件能实现的功能，使用Samurize都可以实现，而且内存占用更小。</p>
<p>贴几个桌面截图出来看看</p>
<p><a href="http://dkmilan.72pines.com/files/2008/10/snag-0000.png"><img height="292" alt="SNAG-0000" src="http://dkmilan.72pines.com/files/2008/10/snag-0000-thumb.png" width="484" border="0"></a>&nbsp;</p>
<p><a href="http://dkmilan.72pines.com/files/2008/10/snag-0006.png"><img height="292" alt="SNAG-0006" src="http://dkmilan.72pines.com/files/2008/10/snag-0006-thumb.png" width="484" border="0"></a> </p>
<p> <a href="http://dkmilan.72pines.com/2008/10/30/%e6%9c%89%e5%bf%83%ef%bc%8c%e6%97%a0%e6%9e%81%e9%99%90%e4%bc%98%e7%a7%80%e7%9a%84%e5%8f%af%e5%ae%9a%e5%88%b6%e7%be%8e%e5%8c%96%e8%bd%af%e4%bb%b6samurize/#more-141" class="more-link">(more&#8230;)</a></p>
No tag for this post.]]></content:encoded>
			<wfw:commentRss>http://dkmilan.72pines.com/2008/10/30/%e6%9c%89%e5%bf%83%ef%bc%8c%e6%97%a0%e6%9e%81%e9%99%90%e4%bc%98%e7%a7%80%e7%9a%84%e5%8f%af%e5%ae%9a%e5%88%b6%e7%be%8e%e5%8c%96%e8%bd%af%e4%bb%b6samurize/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Simple Guide &#38; Introduction For ServiceMaster</title>
		<link>http://dkmilan.72pines.com/2008/10/20/simple-guide-introduction-for-servicemaster/</link>
		<comments>http://dkmilan.72pines.com/2008/10/20/simple-guide-introduction-for-servicemaster/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 15:18:22 +0000</pubDate>
		<dc:creator>dkmilan</dc:creator>
		
		<category><![CDATA[ServiceMaster]]></category>

		<category><![CDATA[精彩小软]]></category>

		<category><![CDATA[系统优化]]></category>

		<category><![CDATA[系统服务优化专家]]></category>

		<guid isPermaLink="false">http://dkmilan.72pines.com/2008/10/20/simple-guide-introduction-for-servicemaster/</guid>
		<description><![CDATA[
What’s Windows Service
On Microsoft Windows operating systems, a Windows service is a long-running executable that performs specific functions and which is designed not to require user intervention. Windows services can be configured to start when the operating system is booted and run in the background as long as Windows is running, or they can be [...]]]></description>
			<content:encoded><![CDATA[<h1></h1>
<h4>What’s Windows Service</h4>
<blockquote><p>On Microsoft Windows operating systems, a Windows service is a long-running executable that performs specific functions and which is designed not to require user intervention. Windows services can be configured to start when the operating system is booted and run in the background as long as Windows is running, or they can be started manually when required. They are similar in concept to a Unix daemon. Many appear in the processes list in the Windows Task Manager, most often with a username of SYSTEM, LOCAL SERVICE or NETWORK SERVICE, though not all processes with the SYSTEM username are services. The remaining services run through svchost.exe as DLLs loaded into memory.</p>
</blockquote>
<blockquote><p><u>From Wikipedia, the free encyclopedia</u></p>
</blockquote>
<h4>Simple Introduction to <a name="OLE_LINK2"></a><a name="OLE_LINK1">Service Master</a></h4>
<p><a href="http://dkmilan.72pines.com/files/2008/10/smlogo2.png"><img height="165" alt="smlogo2副本" src="http://dkmilan.72pines.com/files/2008/10/smlogo2-thumb.png" width="260" align="right" border="0"></a>Service Master is a Windows optimization software which devote to Service Optimization. It can save system resources and improve the efficient by stop or forbid some unnecessary services. Service Master is easy to use even both for freshman and master user.</p>
<p> <a href="http://dkmilan.72pines.com/2008/10/20/simple-guide-introduction-for-servicemaster/#more-124" class="more-link">(more&#8230;)</a></p>
No tag for this post.]]></content:encoded>
			<wfw:commentRss>http://dkmilan.72pines.com/2008/10/20/simple-guide-introduction-for-servicemaster/feed/</wfw:commentRss>
		</item>
		<item>
		<title>82天的沉寂之后，新一篇日志</title>
		<link>http://dkmilan.72pines.com/2008/09/13/82%e5%a4%a9%e7%9a%84%e6%b2%89%e5%af%82%e4%b9%8b%e5%90%8e%ef%bc%8c%e6%96%b0%e4%b8%80%e7%af%87%e6%97%a5%e5%bf%97/</link>
		<comments>http://dkmilan.72pines.com/2008/09/13/82%e5%a4%a9%e7%9a%84%e6%b2%89%e5%af%82%e4%b9%8b%e5%90%8e%ef%bc%8c%e6%96%b0%e4%b8%80%e7%af%87%e6%97%a5%e5%bf%97/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 14:59:36 +0000</pubDate>
		<dc:creator>dkmilan</dc:creator>
		
		<category><![CDATA[个人心情]]></category>

		<guid isPermaLink="false">http://dkmilan.72pines.com/2008/09/13/82%e5%a4%a9%e7%9a%84%e6%b2%89%e5%af%82%e4%b9%8b%e5%90%8e%ef%bc%8c%e6%96%b0%e4%b8%80%e7%af%87%e6%97%a5%e5%bf%97/</guid>
		<description><![CDATA[6月23号之后我就没写过东西，一是先忙考试，考试结束回家两天半又奔赴沈阳，学了一个月日语之后终于回家了，然后20又回学校了。回学校以为会轻松点，不过紧接着就是泰克培训，太崩溃了。。。。
这两天终于有时间更新下我这个博客了。。。。
No tag for this post.]]></description>
			<content:encoded><![CDATA[<p>6月23号之后我就没写过东西，一是先忙考试，考试结束回家两天半又奔赴沈阳，学了一个月日语之后终于回家了，然后20又回学校了。回学校以为会轻松点，不过紧接着就是泰克培训，太崩溃了。。。。</p>
<p>这两天终于有时间更新下我这个博客了。。。。</p>
No tag for this post.]]></content:encoded>
			<wfw:commentRss>http://dkmilan.72pines.com/2008/09/13/82%e5%a4%a9%e7%9a%84%e6%b2%89%e5%af%82%e4%b9%8b%e5%90%8e%ef%bc%8c%e6%96%b0%e4%b8%80%e7%af%87%e6%97%a5%e5%bf%97/feed/</wfw:commentRss>
		</item>
		<item>
		<title>意殇</title>
		<link>http://dkmilan.72pines.com/2008/06/23/%e6%84%8f%e6%ae%87/</link>
		<comments>http://dkmilan.72pines.com/2008/06/23/%e6%84%8f%e6%ae%87/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 15:04:54 +0000</pubDate>
		<dc:creator>dkmilan</dc:creator>
		
		<category><![CDATA[狂恋绿茵]]></category>

		<category><![CDATA[意大利]]></category>

		<category><![CDATA[欧洲杯]]></category>

		<category><![CDATA[米兰]]></category>

		<guid isPermaLink="false">http://dkmilan.72pines.com/2008/06/23/%e6%84%8f%e6%ae%87/</guid>
		<description><![CDATA[4：30，我糊里糊涂的自然醒，一看耳机已经不在耳边，我知道我已经晚了。我得马上下床看球。
90：03，90分钟的比赛马上就要结束了，0:0。即使此时我的大脑再混沌，我也预见到了这场比赛恐怕要打加时，乃至点球。一场极其丑陋的加时，双方几乎没有在进攻上花费脑细胞，沉闷无趣的30分钟，连射正都没有几次的两只地中海球队走向了点球决战
随着小法踢出的皮球钻进网窝，我的意大利回家了，以一种惨烈丑陋的方式。
说实话，我对这支意大利感到无奈。托尼一个赛季三十几个联赛进球怎么感觉都是假的，曾经的意甲德甲最佳射手消失了，我们看到的只是一个永远找不到球门的托尼，一个迷失在后卫群中的托尼，只能让人无奈的悲呼：“Luca，你脚上穿的难道是Air Force One么？”
即使他在皇马很不济，即使被称为最水的欧洲足球先生与世界足球先生，卡纳瓦罗是后防线上的作用仍然是无可比拟的，他的上抢永远是他的搭档的最好的镇定剂，不管是内斯塔还是马特拉济。这次没有卡纳瓦罗的欧洲杯，瞬间便把意大利后防线的巨大问题完全暴露了出来：80一代，你们谁能顶替老队长？巴尔扎利？不要忘了这里不是FM，巴尔扎利也不是FM里面那个稳定强壮的后防铁塔。费拉里？除了平庸以外谁还能找到另外一个词形容这个曾经的希望之星？
还好，我们基耶利尼，可边可中的尤文后卫让我想到了马尔蒂尼。不过看了比赛之后，我发现他变了，现在的他比起打边卫的时候更强大，或许从特点看，他不是下一个马尔蒂尼，但是我们已经清晰的看到了一个年轻了11岁的卡纳瓦罗正在崛起。凶狠的上抢，准确的卡位，强壮的身体，出色的意识，还有身高，还能打边路，活脱脱一个卡纳瓦罗的加强版嘛。
赛后，我们看到了一个泪流满面的皮尔洛，这次他的缺阵是意大利最大的损失，小组赛意大利就是靠着他、基耶利尼和布冯的出色发挥才跌跌撞撞的走入淘汰赛，可他却黄牌停赛了。全罗马中场让我们看到了一个有跑动、有抢断、有激情、有活力的意大利中场，但总是缺少一些头脑与创意。皮尔洛的缺阵是意大利的致命伤。他又一次向全世界证明了：皮尔洛，不仅仅是米兰找不到他的替身，意大利也没有，全世界只有一个皮尔洛，或许他真的是上帝的恩赐吧。
德罗西，或许多纳多尼把他作为皮尔洛的应急替代品的确是为难他了，他只是一个出色的意大利全能中场，但他不是皮尔洛。他有身体，有远射，跑动积极防守到位，技术在意大利的中场也是很优异的，但是他还远远不是皮尔洛，或许他还是缺少一些皮尔洛元素吧。但是我相信德罗西会是未来几年内意大利的中场核心。佩罗塔仍然是个工兵性前腰，阿奎拉尼则没有踢出在罗马的水平，或许斯帕莱蒂的战术可以让他们三个都踢出皮尔洛的味道，但是国家队没有斯帕莱蒂，他们也还不是皮尔洛。
坚毅如钢的表情，寒冷如冰的目光，我们又看到了最好的布冯，可是他面对的是一只完全扭曲的意大利，以及一个更神奇的圣卡西。意大利人不会踢点球，可是传统意义上，西班牙更不会。不过圣卡西的存在似乎就是为了把不可能变成可能。或许就是命吧。
再见了，意大利，我的无倾向欧洲杯也要开幕了

	 [意大利]-[欧洲杯]-[米兰]
]]></description>
			<content:encoded><![CDATA[<p>4：30，我糊里糊涂的自然醒，一看耳机已经不在耳边，我知道我已经晚了。我得马上下床看球。</p>
<p>90：03，90分钟的比赛马上就要结束了，0:0。即使此时我的大脑再混沌，我也预见到了这场比赛恐怕要打加时，乃至点球。一场极其丑陋的加时，双方几乎没有在进攻上花费脑细胞，沉闷无趣的30分钟，连射正都没有几次的两只地中海球队走向了点球决战</p>
<p>随着小法踢出的皮球钻进网窝，我的意大利回家了，以一种惨烈丑陋的方式。</p>
<p>说实话，我对这支意大利感到无奈。托尼一个赛季三十几个联赛进球怎么感觉都是假的，曾经的意甲德甲最佳射手消失了，我们看到的只是一个永远找不到球门的托尼，一个迷失在后卫群中的托尼，只能让人无奈的悲呼：“Luca，你脚上穿的难道是Air Force One么？”</p>
<p>即使他在皇马很不济，即使被称为最水的欧洲足球先生与世界足球先生，卡纳瓦罗是后防线上的作用仍然是无可比拟的，他的上抢永远是他的搭档的最好的镇定剂，不管是内斯塔还是马特拉济。这次没有卡纳瓦罗的欧洲杯，瞬间便把意大利后防线的巨大问题完全暴露了出来：80一代，你们谁能顶替老队长？巴尔扎利？不要忘了这里不是FM，巴尔扎利也不是FM里面那个稳定强壮的后防铁塔。费拉里？除了平庸以外谁还能找到另外一个词形容这个曾经的希望之星？</p>
<p>还好，我们基耶利尼，可边可中的尤文后卫让我想到了马尔蒂尼。不过看了比赛之后，我发现他变了，现在的他比起打边卫的时候更强大，或许从特点看，他不是下一个马尔蒂尼，但是我们已经清晰的看到了一个年轻了11岁的卡纳瓦罗正在崛起。凶狠的上抢，准确的卡位，强壮的身体，出色的意识，还有身高，还能打边路，活脱脱一个卡纳瓦罗的加强版嘛。</p>
<p>赛后，我们看到了一个泪流满面的皮尔洛，这次他的缺阵是意大利最大的损失，小组赛意大利就是靠着他、基耶利尼和布冯的出色发挥才跌跌撞撞的走入淘汰赛，可他却黄牌停赛了。全罗马中场让我们看到了一个有跑动、有抢断、有激情、有活力的意大利中场，但总是缺少一些头脑与创意。皮尔洛的缺阵是意大利的致命伤。他又一次向全世界证明了：皮尔洛，不仅仅是米兰找不到他的替身，意大利也没有，全世界只有一个皮尔洛，或许他真的是上帝的恩赐吧。</p>
<p>德罗西，或许多纳多尼把他作为皮尔洛的应急替代品的确是为难他了，他只是一个出色的意大利全能中场，但他不是皮尔洛。他有身体，有远射，跑动积极防守到位，技术在意大利的中场也是很优异的，但是他还远远不是皮尔洛，或许他还是缺少一些皮尔洛元素吧。但是我相信德罗西会是未来几年内意大利的中场核心。佩罗塔仍然是个工兵性前腰，阿奎拉尼则没有踢出在罗马的水平，或许斯帕莱蒂的战术可以让他们三个都踢出皮尔洛的味道，但是国家队没有斯帕莱蒂，他们也还不是皮尔洛。</p>
<p>坚毅如钢的表情，寒冷如冰的目光，我们又看到了最好的布冯，可是他面对的是一只完全扭曲的意大利，以及一个更神奇的圣卡西。意大利人不会踢点球，可是传统意义上，西班牙更不会。不过圣卡西的存在似乎就是为了把不可能变成可能。或许就是命吧。</p>
<p>再见了，意大利，我的无倾向欧洲杯也要开幕了</p>

	 [<a href="http://dkmilan.72pines.com/tag/%e6%84%8f%e5%a4%a7%e5%88%a9/" title="意大利" rel="tag">意大利</a>]-[<a href="http://dkmilan.72pines.com/tag/%e6%ac%a7%e6%b4%b2%e6%9d%af/" title="欧洲杯" rel="tag">欧洲杯</a>]-[<a href="http://dkmilan.72pines.com/tag/%e7%b1%b3%e5%85%b0/" title="米兰" rel="tag">米兰</a>]<br />
]]></content:encoded>
			<wfw:commentRss>http://dkmilan.72pines.com/2008/06/23/%e6%84%8f%e6%ae%87/feed/</wfw:commentRss>
		</item>
		<item>
		<title>C#中的多态：visual、override 与 new</title>
		<link>http://dkmilan.72pines.com/2008/06/06/c%e4%b8%ad%e7%9a%84%e5%a4%9a%e6%80%81%ef%bc%9avisual%e3%80%81override-%e4%b8%8e-new/</link>
		<comments>http://dkmilan.72pines.com/2008/06/06/c%e4%b8%ad%e7%9a%84%e5%a4%9a%e6%80%81%ef%bc%9avisual%e3%80%81override-%e4%b8%8e-new/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 16:38:59 +0000</pubDate>
		<dc:creator>dkmilan</dc:creator>
		
		<category><![CDATA[.Net编程]]></category>

		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://dkmilan.72pines.com/2008/06/06/c%e4%b8%ad%e7%9a%84%e5%a4%9a%e6%80%81%ef%bc%9avisual%e3%80%81override-%e4%b8%8e-new/</guid>
		<description><![CDATA[{ZHUAXIAead3dc42408ec383161c818b0f5bad3eUnion}
今天金山笔试，出了这么一道题，做题的途中忽然想到了Blog好久不更新了。。。。汗，溜号啊
public abstract class A
{
public&#160;A()
{
Console.WriteLine('A');
}
public&#160;virtual void Fun()
{
Console.WriteLine(&#34;A.Fun()&#34;);
}
}
public&#160;class B: A
{
public&#160;B()
{
Console.WriteLine('B');
}
public&#160;new void Fun()
{
Console.WriteLine(&#34;B.Fun()&#34;);
}
public&#160;static void Main()
{
A&#160;a = new B();
a.Fun();
}
}
结果是
A
B
A.Fun()
结果倒是显而易见，不过我想起刚看C#时，对于visual\override\new的区别来着，当时就有点糊涂。
MSDN的解释是这样的
在 C# 中，派生类可以包含与基类方法同名的方法。

基类方法必须定义为 virtual。
如果派生类中的方法前面没有 new 或 override 关键字，则编译器将发出警告，该方法将有如存在 new 关键字一样执行操作。
如果派生类中的方法前面带有 new 关键字，则该方法被定义为独立于基类中的方法。
如果派生类中的方法前面带有 override 关键字，则派生类的对象将调用该方法，而不是调用基类方法。
可以从派生类中使用 base 关键字调用基类方法。
override、virtual 和 new 关键字还可以用于属性、索引器和事件中。


当时是相当的糊涂了。啥玩意，多态咋还出来一个new呢
后来慢慢理解了。。。
visual是override的前提与基础，既只有在基类的函数是visual的情况下，你才能在子类中override，否则编译会报错
new则是跟基类没多大关系的，除了名字相同之外。它独立于基类，相当于在子类中添加了一个新的方法。
我写了一个更合适的例子
public abstract class A
{
public&#160;void F()
{
System.Console.WriteLine(&#34;A.F&#34;);
}
public&#160;virtual void G()
{
System.Console.WriteLine(&#34;A.G&#34;);
}
}
public&#160;class B:A
{
public&#160;new void F()
{
System.Console.WriteLine(&#34;B.F&#34;);
}
public&#160;new void G()
{
System.Console.WriteLine(&#34;B.G&#34;);
}
}
public&#160;class C:A
{
public&#160;new void F()
{
System.Console.WriteLine(&#34;C.F&#34;);
}
public&#160;override void G()
{
System.Console.WriteLine(&#34;C.G&#34;);
}
}
class&#160;Program
{
static&#160;void Main(string[] args)
{
B&#160;b = new B();
C&#160;c = [...]]]></description>
			<content:encoded><![CDATA[<p><font color="#ffffff">{ZHUAXIAead3dc42408ec383161c818b0f5bad3eUnion}</font></p>
<p>今天金山笔试，出了这么一道题，做题的途中忽然想到了Blog好久不更新了。。。。汗，溜号啊</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">public</span><span style="color: Gray;"> </span><span style="color: Blue;">abstract</span><span style="color: Gray;"> </span><span class="hl-types">class</span><span style="color: Gray;"> </span><span style="color: Blue;">A</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">A</span><span style="color: Olive;">()</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Blue;">Console</span><span style="color: Gray;">.</span><span style="color: Blue;">WriteLine</span><span style="color: Olive;">(</span><span style="color: Gray;">'</span><span style="color: Blue;">A</span><span style="color: Gray;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">virtual</span><span style="color: Gray;"> </span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">Fun</span><span style="color: Olive;">()</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Blue;">Console</span><span style="color: Gray;">.</span><span style="color: Blue;">WriteLine</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">A.Fun()</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">class</span><span style="color: Gray;"> </span><span style="color: Blue;">B</span><span style="color: Gray;">: </span><span style="color: Blue;">A</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">B</span><span style="color: Olive;">()</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Blue;">Console</span><span style="color: Gray;">.</span><span style="color: Blue;">WriteLine</span><span style="color: Olive;">(</span><span style="color: Gray;">'</span><span style="color: Blue;">B</span><span style="color: Gray;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">Fun</span><span style="color: Olive;">()</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Blue;">Console</span><span style="color: Gray;">.</span><span style="color: Blue;">WriteLine</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">B.Fun()</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">static</span><span style="color: Gray;"> </span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">Main</span><span style="color: Olive;">()</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Blue;">A</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">a</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">B</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">Fun</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>结果是</p>
<blockquote><p><strong>A<br />
B<br />
A.Fun()</strong></p></blockquote>
<p><font color="#555555">结果倒是显而易见，不过我想起刚看C#时，对于visual\override\new的区别来着，当时就有点糊涂。</font></p>
<p><font color="#555555">MSDN的解释是这样的</font></p>
<blockquote><p>在 C# 中，派生类可以包含与基类方法同名的方法。</p>
<ul>
<li>基类方法必须定义为 virtual。</li>
<li>如果派生类中的方法前面没有 new 或 override 关键字，则编译器将发出警告，该方法将有如存在 new 关键字一样执行操作。</li>
<li>如果派生类中的方法前面带有 new 关键字，则该方法被定义为独立于基类中的方法。</li>
<li>如果派生类中的方法前面带有 override 关键字，则派生类的对象将调用该方法，而不是调用基类方法。</li>
<li>可以从派生类中使用 base 关键字调用基类方法。</li>
<li>override、virtual 和 new 关键字还可以用于属性、索引器和事件中。</li>
</ul>
</blockquote>
<p><font color="#555555">当时是相当的糊涂了。啥玩意，多态咋还出来一个new呢</font></p>
<p><font color="#555555">后来慢慢理解了。。。</font></p>
<p><font color="#555555">visual是override的前提与基础，既只有在基类的函数是visual的情况下，你才能在子类中override，否则编译会报错</font></p>
<p><font color="#555555">new则是跟基类没多大关系的，除了名字相同之外。它独立于基类，相当于在子类中添加了一个新的方法。</font></p>
<p><font color="#555555">我写了一个更合适的例子</font></p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">public</span><span style="color: Gray;"> </span><span style="color: Blue;">abstract</span><span style="color: Gray;"> </span><span class="hl-types">class</span><span style="color: Gray;"> </span><span style="color: Blue;">A</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">F</span><span style="color: Olive;">()</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Blue;">System</span><span style="color: Gray;">.</span><span style="color: Blue;">Console</span><span style="color: Gray;">.</span><span style="color: Blue;">WriteLine</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">A.F</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">virtual</span><span style="color: Gray;"> </span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">G</span><span style="color: Olive;">()</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Blue;">System</span><span style="color: Gray;">.</span><span style="color: Blue;">Console</span><span style="color: Gray;">.</span><span style="color: Blue;">WriteLine</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">A.G</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">class</span><span style="color: Gray;"> </span><span style="color: Blue;">B</span><span style="color: Gray;">:</span><span style="color: Blue;">A</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">F</span><span style="color: Olive;">()</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Blue;">System</span><span style="color: Gray;">.</span><span style="color: Blue;">Console</span><span style="color: Gray;">.</span><span style="color: Blue;">WriteLine</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">B.F</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">G</span><span style="color: Olive;">()</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Blue;">System</span><span style="color: Gray;">.</span><span style="color: Blue;">Console</span><span style="color: Gray;">.</span><span style="color: Blue;">WriteLine</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">B.G</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">class</span><span style="color: Gray;"> </span><span style="color: Blue;">C</span><span style="color: Gray;">:</span><span style="color: Blue;">A</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">F</span><span style="color: Olive;">()</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Blue;">System</span><span style="color: Gray;">.</span><span style="color: Blue;">Console</span><span style="color: Gray;">.</span><span style="color: Blue;">WriteLine</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">C.F</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">override</span><span style="color: Gray;"> </span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">G</span><span style="color: Olive;">()</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Blue;">System</span><span style="color: Gray;">.</span><span style="color: Blue;">Console</span><span style="color: Gray;">.</span><span style="color: Blue;">WriteLine</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">C.G</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span class="hl-types">class</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Program</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span class="hl-types">static</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">Main</span><span style="color: Olive;">(</span><span style="color: Blue;">string</span><span style="color: Olive;">[]</span><span style="color: Gray;"> </span><span style="color: Blue;">args</span><span style="color: Olive;">)</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Blue;">B</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">b</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">B</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">C</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">c</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">C</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">A</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">a</span><span style="color: Gray;"> = </span><span style="color: Blue;">b</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">A</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">d</span><span style="color: Gray;"> = </span><span style="color: Blue;">c</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">F</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">a</span><span style="color: Gray;">.</span><span style="color: Blue;">G</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">F</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">b</span><span style="color: Gray;">.</span><span style="color: Blue;">G</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">c</span><span style="color: Gray;">.</span><span style="color: Blue;">F</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">c</span><span style="color: Gray;">.</span><span style="color: Blue;">G</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">d</span><span style="color: Gray;">.</span><span style="color: Blue;">F</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">d</span><span style="color: Gray;">.</span><span style="color: Blue;">G</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">Console</span><span style="color: Gray;">.</span><span style="color: Blue;">Read</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p><font color="#555555">结果如下</font></p>
<blockquote><p>A.F<br />
A.G<br />
B.F<br />
B.G<br />
C.F<br />
C.G<br />
A.F<br />
C.G</p></blockquote>
<p><font color="#555555">值得注意的是d的调用，因为C的G()实现是override，因此c.G()隐藏了A.G()，输出结果就是c的输出结果，而b的G()实现是new，独立于基类，因此A.G()并没有被覆盖，a调用是仍然是调用的的A自己的G()， b调用的是new G().</font></p>

	 [<a href="http://dkmilan.72pines.com/tag/c/" title="C#" rel="tag">C#</a>]<br />

	<ul class='st-related-posts'>
	<li><a href="http://dkmilan.72pines.com/2008/05/23/c%e5%ae%9e%e7%8e%b0%e6%94%af%e6%8c%81%e6%8f%92%e4%bb%b6%e4%b8%8e%e4%ba%8c%e6%ac%a1%e5%bc%80%e5%8f%91%e7%9a%84%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e7%bc%96%e5%86%99/" title="C#实现支持插件与二次开发的应用程序编写 (五月 23, 2008)">C#实现支持插件与二次开发的应用程序编写</a></li>
	<li><a href="http://dkmilan.72pines.com/2008/05/12/fetionvm%ef%bc%9a%e6%91%86%e8%84%b1dotnetfw%e7%9a%84%e9%95%a3%e9%93%90/" title="FetionVM：摆脱DotNetFW的镣铐 (五月 12, 2008)">FetionVM：摆脱DotNetFW的镣铐</a></li>
	<li><a href="http://dkmilan.72pines.com/2008/05/07/%e8%b0%83%e7%94%a8windows-api%e5%ae%9e%e7%8e%b0c%e7%aa%97%e4%bd%93%e9%98%b4%e5%bd%b1/" title="调用Windows API实现C#窗体阴影 (五月 7, 2008)">调用Windows API实现C#窗体阴影</a></li>
	<li><a href="http://dkmilan.72pines.com/2008/05/07/%e8%b0%83%e7%94%a8windows-api%e5%ae%9e%e7%8e%b0c%e7%aa%97%e4%bd%93%e9%80%8f%e6%98%8e%e4%bb%a3%e7%a0%81/" title="调用Windows API实现C#窗体透明代码 (五月 7, 2008)">调用Windows API实现C#窗体透明代码</a></li>
	<li><a href="http://dkmilan.72pines.com/2008/04/11/service-master-17/" title="[原创软件]系统服务优化专家 Service Master 1.7.213 发布！ (四月 11, 2008)">[原创软件]系统服务优化专家 Service Master 1.7.213 发布！</a></li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://dkmilan.72pines.com/2008/06/06/c%e4%b8%ad%e7%9a%84%e5%a4%9a%e6%80%81%ef%bc%9avisual%e3%80%81override-%e4%b8%8e-new/feed/</wfw:commentRss>
		</item>
		<item>
		<title>C#实现支持插件与二次开发的应用程序编写</title>
		<link>http://dkmilan.72pines.com/2008/05/23/c%e5%ae%9e%e7%8e%b0%e6%94%af%e6%8c%81%e6%8f%92%e4%bb%b6%e4%b8%8e%e4%ba%8c%e6%ac%a1%e5%bc%80%e5%8f%91%e7%9a%84%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e7%bc%96%e5%86%99/</link>
		<comments>http://dkmilan.72pines.com/2008/05/23/c%e5%ae%9e%e7%8e%b0%e6%94%af%e6%8c%81%e6%8f%92%e4%bb%b6%e4%b8%8e%e4%ba%8c%e6%ac%a1%e5%bc%80%e5%8f%91%e7%9a%84%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e7%bc%96%e5%86%99/#comments</comments>
		<pubDate>Fri, 23 May 2008 09:18:05 +0000</pubDate>
		<dc:creator>dkmilan</dc:creator>
		
		<category><![CDATA[.Net编程]]></category>

		<category><![CDATA[系统服务优化专家]]></category>

		<category><![CDATA[.Net]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[Plugin]]></category>

		<category><![CDATA[ServiceMaster]]></category>

		<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://dkmilan.72pines.com/2008/05/23/c%e5%ae%9e%e7%8e%b0%e6%94%af%e6%8c%81%e6%8f%92%e4%bb%b6%e4%b8%8e%e4%ba%8c%e6%ac%a1%e5%bc%80%e5%8f%91%e7%9a%84%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e7%bc%96%e5%86%99/</guid>
		<description><![CDATA[这两天一直在研究这个插件功能的实现，总结一些心得吧。
首先是应该定义插件应该实现的接口，接口里面是插件需要实现的功能与提供的内容。我是这么设计的：
首先是建立一个新的类库，用于把我们支持的插件的类型都以接口的形式放进去。比如我现在为我的Service Master设计了以下几个插件类型：外观插件，功能插件，系统信息插件，其他类型插件。目前接口设计如下

然后在原有的软件项目(ServiceMaster)中添加了一个插件检测的类，这个类用于检测已经放到Plugin文件夹下的插件。

	 [.Net]-[C#]-[Plugin]-[ServiceMaster]-[插件]

	
	系统服务优化专家
	C#中的多态：visual、override 与 new
	FetionVM：摆脱DotNetFW的镣铐
	调用Windows API实现C#窗体阴影
	调用Windows API实现C#窗体透明代码


]]></description>
			<content:encoded><![CDATA[<p>这两天一直在研究这个插件功能的实现，总结一些心得吧。</p>
<p>首先是应该定义<a HREF="http://dkmilan.72pines.com/tag/plugin/">插件</a>应该实现的接口，接口里面是插件需要实现的功能与提供的内容。我是这么设计的：</p>
<p>首先是建立一个新的类库，用于把我们支持的插件的类型都以接口的形式放进去。比如我现在为我的<a HREF="http://dkmilan.72pines.com/tag/servicemaster/">Service Master</a>设计了以下几个插件类型：外观插件，功能插件，系统信息插件，其他类型插件。目前接口设计如下</p>
<p><a HREF="http://dkmilan.72pines.com/files/2008/05/2008-5-24-0000.png"><img BORDER="0" WIDTH="492" SRC="http://dkmilan.72pines.com/files/2008/05/2008-5-24-0000-thumb.png" ALT="2008-5-24-0000" HEIGHT="236" /></a></p>
<p>然后在原有的软件项目(<a HREF="http://dkmilan.72pines.com/tag/servicemaster/">ServiceMaster</a>)中添加了一个插件检测的类，这个类用于检测已经放到Plugin文件夹下的插件。</p>
<p> <a href="http://dkmilan.72pines.com/2008/05/23/c%e5%ae%9e%e7%8e%b0%e6%94%af%e6%8c%81%e6%8f%92%e4%bb%b6%e4%b8%8e%e4%ba%8c%e6%ac%a1%e5%bc%80%e5%8f%91%e7%9a%84%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e7%bc%96%e5%86%99/#more-98" class="more-link">(more&#8230;)</a></p>

	 [<a href="http://dkmilan.72pines.com/tag/net/" title=".Net" rel="tag">.Net</a>]-[<a href="http://dkmilan.72pines.com/tag/c/" title="C#" rel="tag">C#</a>]-[<a href="http://dkmilan.72pines.com/tag/plugin/" title="Plugin" rel="tag">Plugin</a>]-[<a href="http://dkmilan.72pines.com/tag/servicemaster/" title="ServiceMaster" rel="tag">ServiceMaster</a>]-[<a href="http://dkmilan.72pines.com/tag/%e6%8f%92%e4%bb%b6/" title="插件" rel="tag">插件</a>]<br />

	<ul class='st-related-posts'>
	<li><a href="http://dkmilan.72pines.com/系统服务优化专家-service-master/" title="系统服务优化专家 (十一月 9, 2008)">系统服务优化专家</a></li>
	<li><a href="http://dkmilan.72pines.com/2008/06/06/c%e4%b8%ad%e7%9a%84%e5%a4%9a%e6%80%81%ef%bc%9avisual%e3%80%81override-%e4%b8%8e-new/" title="C#中的多态：visual、override 与 new (六月 6, 2008)">C#中的多态：visual、override 与 new</a></li>
	<li><a href="http://dkmilan.72pines.com/2008/05/12/fetionvm%ef%bc%9a%e6%91%86%e8%84%b1dotnetfw%e7%9a%84%e9%95%a3%e9%93%90/" title="FetionVM：摆脱DotNetFW的镣铐 (五月 12, 2008)">FetionVM：摆脱DotNetFW的镣铐</a></li>
	<li><a href="http://dkmilan.72pines.com/2008/05/07/%e8%b0%83%e7%94%a8windows-api%e5%ae%9e%e7%8e%b0c%e7%aa%97%e4%bd%93%e9%98%b4%e5%bd%b1/" title="调用Windows API实现C#窗体阴影 (五月 7, 2008)">调用Windows API实现C#窗体阴影</a></li>
	<li><a href="http://dkmilan.72pines.com/2008/05/07/%e8%b0%83%e7%94%a8windows-api%e5%ae%9e%e7%8e%b0c%e7%aa%97%e4%bd%93%e9%80%8f%e6%98%8e%e4%bb%a3%e7%a0%81/" title="调用Windows API实现C#窗体透明代码 (五月 7, 2008)">调用Windows API实现C#窗体透明代码</a></li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://dkmilan.72pines.com/2008/05/23/c%e5%ae%9e%e7%8e%b0%e6%94%af%e6%8c%81%e6%8f%92%e4%bb%b6%e4%b8%8e%e4%ba%8c%e6%ac%a1%e5%bc%80%e5%8f%91%e7%9a%84%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e7%bc%96%e5%86%99/feed/</wfw:commentRss>
		</item>
		<item>
		<title>汶川的背后</title>
		<link>http://dkmilan.72pines.com/2008/05/18/%e6%b1%b6%e5%b7%9d%e7%9a%84%e8%83%8c%e5%90%8e/</link>
		<comments>http://dkmilan.72pines.com/2008/05/18/%e6%b1%b6%e5%b7%9d%e7%9a%84%e8%83%8c%e5%90%8e/#comments</comments>
		<pubDate>Sun, 18 May 2008 16:17:35 +0000</pubDate>
		<dc:creator>dkmilan</dc:creator>
		
		<category><![CDATA[个人心情]]></category>

		<category><![CDATA[地震]]></category>

		<category><![CDATA[汶川]]></category>

		<guid isPermaLink="false">http://dkmilan.72pines.com/2008/05/18/%e6%b1%b6%e5%b7%9d%e7%9a%84%e8%83%8c%e5%90%8e/</guid>
		<description><![CDATA[
汶川是一面镜子，我们既看到了人性的善良也看到了人性的丑恶
汶川是一面镜子，我们既看到了生命的坚强也看到了生命的脆弱
汶川是一面镜子，我们既看到了民族的团结也看到了民族的劣根

	 [地震]-[汶川]
]]></description>
			<content:encoded><![CDATA[<p><a HREF="http://dkmilan.72pines.com/files/2008/05/u2107p1t330d389f6816dt20080518230639.jpg"><img BORDER="0" WIDTH="501" SRC="http://dkmilan.72pines.com/files/2008/05/u2107p1t330d389f6816dt20080518230639-thumb.jpg" ALT="U2107P1T330D389F6816DT20080518230639" HEIGHT="83" /></a></p>
<p>汶川是一面镜子，我们既看到了人性的善良也看到了人性的丑恶<br />
汶川是一面镜子，我们既看到了生命的坚强也看到了生命的脆弱<br />
汶川是一面镜子，我们既看到了民族的团结也看到了民族的劣根</p>
<p> <a href="http://dkmilan.72pines.com/2008/05/18/%e6%b1%b6%e5%b7%9d%e7%9a%84%e8%83%8c%e5%90%8e/#more-95" class="more-link">(more&#8230;)</a></p>

	 [<a href="http://dkmilan.72pines.com/tag/%e5%9c%b0%e9%9c%87/" title="地震" rel="tag">地震</a>]-[<a href="http://dkmilan.72pines.com/tag/%e6%b1%b6%e5%b7%9d/" title="汶川" rel="tag">汶川</a>]<br />
]]></content:encoded>
			<wfw:commentRss>http://dkmilan.72pines.com/2008/05/18/%e6%b1%b6%e5%b7%9d%e7%9a%84%e8%83%8c%e5%90%8e/feed/</wfw:commentRss>
		</item>
		<item>
		<title>FetionVM：摆脱DotNetFW的镣铐</title>
		<link>http://dkmilan.72pines.com/2008/05/12/fetionvm%ef%bc%9a%e6%91%86%e8%84%b1dotnetfw%e7%9a%84%e9%95%a3%e9%93%90/</link>
		<comments>http://dkmilan.72pines.com/2008/05/12/fetionvm%ef%bc%9a%e6%91%86%e8%84%b1dotnetfw%e7%9a%84%e9%95%a3%e9%93%90/#comments</comments>
		<pubDate>Mon, 12 May 2008 16:29:32 +0000</pubDate>
		<dc:creator>dkmilan</dc:creator>
		
		<category><![CDATA[.Net编程]]></category>

		<category><![CDATA[IT业界]]></category>

		<category><![CDATA[.Net]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[FetionVM]]></category>

		<guid isPermaLink="false">http://dkmilan.72pines.com/2008/05/12/fetionvm%ef%bc%9a%e6%91%86%e8%84%b1dotnetfw%e7%9a%84%e9%95%a3%e9%93%90/</guid>
		<description><![CDATA[学.Net3年了，一直苦苦的寻找能让自己编写的几百KB，或者几MB的小东西离开20M的.Net Framework的方法。已知的方法都不是十分的合适，比如用Xenocode、Salamander .Net Linker这类东西，不是破解吗难找，就是不好用。现在终于找到了一个非常好用的方法~那就是飞信！！！

感谢中国电信，感谢飞信，感谢FetionVM.exe~~~]]></description>
			<content:encoded><![CDATA[<p>学.Net3年了，一直苦苦的寻找能让自己编写的几百KB，或者几MB的小东西离开20M的.Net Framework的方法。已知的方法都不是十分的合适，比如用Xenocode、Salamander .Net Linker这类东西，不是破解吗难找，就是不好用。现在终于找到了一个非常好用的方法~那就是飞信！！！</p>
<p>感谢中国电信，感谢飞信，感谢FetionVM.exe~~~</p>
<p> <a href="http://dkmilan.72pines.com/2008/05/12/fetionvm%ef%bc%9a%e6%91%86%e8%84%b1dotnetfw%e7%9a%84%e9%95%a3%e9%93%90/#more-92" class="more-link">(more&#8230;)</a></p>

	 [<a href="http://dkmilan.72pines.com/tag/net/" title=".Net" rel="tag">.Net</a>]-[<a href="http://dkmilan.72pines.com/tag/c/" title="C#" rel="tag">C#</a>]-[<a href="http://dkmilan.72pines.com/tag/fetionvm/" title="FetionVM" rel="tag">FetionVM</a>]<br />

	<ul class='st-related-posts'>
	<li><a href="http://dkmilan.72pines.com/2008/06/06/c%e4%b8%ad%e7%9a%84%e5%a4%9a%e6%80%81%ef%bc%9avisual%e3%80%81override-%e4%b8%8e-new/" title="C#中的多态：visual、override 与 new (六月 6, 2008)">C#中的多态：visual、override 与 new</a></li>
	<li><a href="http://dkmilan.72pines.com/2008/05/23/c%e5%ae%9e%e7%8e%b0%e6%94%af%e6%8c%81%e6%8f%92%e4%bb%b6%e4%b8%8e%e4%ba%8c%e6%ac%a1%e5%bc%80%e5%8f%91%e7%9a%84%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e7%bc%96%e5%86%99/" title="C#实现支持插件与二次开发的应用程序编写 (五月 23, 2008)">C#实现支持插件与二次开发的应用程序编写</a></li>
	<li><a href="http://dkmilan.72pines.com/2008/05/07/%e8%b0%83%e7%94%a8windows-api%e5%ae%9e%e7%8e%b0c%e7%aa%97%e4%bd%93%e9%98%b4%e5%bd%b1/" title="调用Windows API实现C#窗体阴影 (五月 7, 2008)">调用Windows API实现C#窗体阴影</a></li>
	<li><a href="http://dkmilan.72pines.com/2008/05/07/%e8%b0%83%e7%94%a8windows-api%e5%ae%9e%e7%8e%b0c%e7%aa%97%e4%bd%93%e9%80%8f%e6%98%8e%e4%bb%a3%e7%a0%81/" title="调用Windows API实现C#窗体透明代码 (五月 7, 2008)">调用Windows API实现C#窗体透明代码</a></li>
	<li><a href="http://dkmilan.72pines.com/2008/04/11/service-master-17/" title="[原创软件]系统服务优化专家 Service Master 1.7.213 发布！ (四月 11, 2008)">[原创软件]系统服务优化专家 Service Master 1.7.213 发布！</a></li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://dkmilan.72pines.com/2008/05/12/fetionvm%ef%bc%9a%e6%91%86%e8%84%b1dotnetfw%e7%9a%84%e9%95%a3%e9%93%90/feed/</wfw:commentRss>
		</item>
		<item>
		<title>调用Windows API实现C#窗体阴影</title>
		<link>http://dkmilan.72pines.com/2008/05/07/%e8%b0%83%e7%94%a8windows-api%e5%ae%9e%e7%8e%b0c%e7%aa%97%e4%bd%93%e9%98%b4%e5%bd%b1/</link>
		<comments>http://dkmilan.72pines.com/2008/05/07/%e8%b0%83%e7%94%a8windows-api%e5%ae%9e%e7%8e%b0c%e7%aa%97%e4%bd%93%e9%98%b4%e5%bd%b1/#comments</comments>
		<pubDate>Wed, 07 May 2008 23:56:07 +0000</pubDate>
		<dc:creator>dkmilan</dc:creator>
		
		<category><![CDATA[.Net编程]]></category>

		<category><![CDATA[API]]></category>

		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://dkmilan.72pines.com/2008/05/07/%e8%b0%83%e7%94%a8windows-api%e5%ae%9e%e7%8e%b0c%e7%aa%97%e4%bd%93%e9%98%b4%e5%bd%b1/</guid>
		<description><![CDATA[做Service Master 1.7的时候，突然想起来我是不是也应该给这个朴素的软件加上一点花的东西，呵呵，于是，就觉得应该去做一个窗体的透明，此外还想实现带有阴影效果窗体，研究了一下WindowsAPI，最后觉得透明和淡入淡出完全可以不用WinAPI来实现的，API实现之后的结果跟修改Opacity属性的效果是完全一样的。只需要在窗体阴影中使用API实现。
这个是具体的WinAPI实现窗体阴影的效果

具体的代码如下

	 [API]-[C#]

	
	C#中的多态：visual、override 与 new
	C#实现支持插件与二次开发的应用程序编写
	FetionVM：摆脱DotNetFW的镣铐
	调用Windows API实现C#窗体透明代码
	[原创软件]系统服务优化专家 Service Master 1.7.213 发布！


]]></description>
			<content:encoded><![CDATA[<p>做Service Master 1.7的时候，突然想起来我是不是也应该给这个朴素的软件加上一点花的东西，呵呵，于是，就觉得应该去做一个窗体的透明，此外还想实现带有阴影效果窗体，研究了一下WindowsAPI，最后觉得透明和淡入淡出完全可以不用WinAPI来实现的，API实现之后的结果跟修改Opacity属性的效果是完全一样的。只需要在窗体阴影中使用API实现。</p>
<p>这个是具体的WinAPI实现窗体阴影的效果<br />
<img src='http://dkmilan.72pines.com/files/2008/05/2008-5-8-0000.png' alt='2008-5-8-0000.png' /></p>
<p>具体的代码如下<br />
 <a href="http://dkmilan.72pines.com/2008/05/07/%e8%b0%83%e7%94%a8windows-api%e5%ae%9e%e7%8e%b0c%e7%aa%97%e4%bd%93%e9%98%b4%e5%bd%b1/#more-81" class="more-link">(more&#8230;)</a></p>

	 [<a href="http://dkmilan.72pines.com/tag/api/" title="API" rel="tag">API</a>]-[<a href="http://dkmilan.72pines.com/tag/c/" title="C#" rel="tag">C#</a>]<br />

	<ul class='st-related-posts'>
	<li><a href="http://dkmilan.72pines.com/2008/06/06/c%e4%b8%ad%e7%9a%84%e5%a4%9a%e6%80%81%ef%bc%9avisual%e3%80%81override-%e4%b8%8e-new/" title="C#中的多态：visual、override 与 new (六月 6, 2008)">C#中的多态：visual、override 与 new</a></li>
	<li><a href="http://dkmilan.72pines.com/2008/05/23/c%e5%ae%9e%e7%8e%b0%e6%94%af%e6%8c%81%e6%8f%92%e4%bb%b6%e4%b8%8e%e4%ba%8c%e6%ac%a1%e5%bc%80%e5%8f%91%e7%9a%84%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e7%bc%96%e5%86%99/" title="C#实现支持插件与二次开发的应用程序编写 (五月 23, 2008)">C#实现支持插件与二次开发的应用程序编写</a></li>
	<li><a href="http://dkmilan.72pines.com/2008/05/12/fetionvm%ef%bc%9a%e6%91%86%e8%84%b1dotnetfw%e7%9a%84%e9%95%a3%e9%93%90/" title="FetionVM：摆脱DotNetFW的镣铐 (五月 12, 2008)">FetionVM：摆脱DotNetFW的镣铐</a></li>
	<li><a href="http://dkmilan.72pines.com/2008/05/07/%e8%b0%83%e7%94%a8windows-api%e5%ae%9e%e7%8e%b0c%e7%aa%97%e4%bd%93%e9%80%8f%e6%98%8e%e4%bb%a3%e7%a0%81/" title="调用Windows API实现C#窗体透明代码 (五月 7, 2008)">调用Windows API实现C#窗体透明代码</a></li>
	<li><a href="http://dkmilan.72pines.com/2008/04/11/service-master-17/" title="[原创软件]系统服务优化专家 Service Master 1.7.213 发布！ (四月 11, 2008)">[原创软件]系统服务优化专家 Service Master 1.7.213 发布！</a></li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://dkmilan.72pines.com/2008/05/07/%e8%b0%83%e7%94%a8windows-api%e5%ae%9e%e7%8e%b0c%e7%aa%97%e4%bd%93%e9%98%b4%e5%bd%b1/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
