﻿<?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>博客园-xiaosonl的研究档案</title><link>http://www.cnblogs.com/xiaosonl/</link><description>数量不多,质量不低</description><language>zh-cn</language><lastBuildDate>Thu, 16 Oct 2008 21:16:42 GMT</lastBuildDate><pubDate>Thu, 16 Oct 2008 21:16:42 GMT</pubDate><ttl>60</ttl><item><title>再谈分层--好吧,我承认这个话题有点俗</title><link>http://www.cnblogs.com/xiaosonl/archive/2008/06/15/1222185.html</link><dc:creator>xiaosonl</dc:creator><author>xiaosonl</author><pubDate>Sat, 14 Jun 2008 17:22:00 GMT</pubDate><guid>http://www.cnblogs.com/xiaosonl/archive/2008/06/15/1222185.html</guid><wfw:comment>http://www.cnblogs.com/xiaosonl/comments/1222185.html</wfw:comment><comments>http://www.cnblogs.com/xiaosonl/archive/2008/06/15/1222185.html#Feedback</comments><slash:comments>23</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiaosonl/comments/commentRss/1222185.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiaosonl/services/trackbacks/1222185.html</trackback:ping><description><![CDATA[<strong>&nbsp;一.层是指什么?为什么要分层?</strong><br />
&nbsp;&nbsp;&nbsp; 对于层的概念,我的理解是包括"抽象层"和"实现层", 即是OO五大原则之依赖倒置原则(DIP), 让你的应用依赖于抽象而不是具体实现. 最常见的做法是加入数据访问的抽象层, 以此来解除对数据库类型的依赖.<br />
<br />
<strong>&nbsp; 二.要分哪些层?</strong><br />
&nbsp;&nbsp;&nbsp; 需要解藕哪些层, 就分出哪些层.<br />
<br />
&nbsp; <strong>三.一般都需要解藕哪些层?</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp; 1.数据访问层, 解除对数据库类型的依赖.<br />
&nbsp;&nbsp;&nbsp;&nbsp; 2.实体层,这主要是因为在ORM的存在, 让Model变的臃肿, 违反了OO五大原则之单一职责原则(SRP):本来一个实体只有表示数据的职责, 现在还多了数据持久化的职责.如果说数据访问层或ORM解除了对数据库类型的依赖, 则数据访问层+实体层就是解除了对数据库类型和数据访问方式的依赖.对开发者来说, 好处就是前期可以使用ORM减少数据访问操作的复杂度, 后期可以根据需求,将部分实现替换成ADO.NET等高效率数据访问方式, 以扩展的形式快速的应对变化.附一个UML图:<br />
&nbsp;<img alt="" src="http://www.cnblogs.com/images/cnblogs_com/xiaosonl/uml.JPG" border="0" /><br />
&nbsp;&nbsp;&nbsp;&nbsp; 3.业务逻辑层.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 很少业务逻辑层能复杂到需要将每个功能都抽象出来, 所以并不需要做到上面两种那样.一般来说, 策略模式+模板方法模式就可以满足需求了.<br />
&nbsp;&nbsp;&nbsp;&nbsp; 4.表示层.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表示层的模式,常见的有MVC和MVP.MVC适合做展示数据的前台网站,MVP的特点是可以不依赖UI层,换句话说,你可以做一个Web的表示层,再做一个WinForm的表示层.至于WebForm模型, 能玩的花样很多, 关键看用的人的水平了.<br />
&nbsp; <br />
&nbsp; 有空打算写一个类似<strong>&lt;&lt;微型项目实践&gt;&gt;</strong>系列的文章, 说明如何开发一个可扩展,易测试,易修改的.NET项目,以及各种常用开发组件在项目中的使用,如企业库,NLog,PostSharp(AOP框架)等.<br />
<br />
<img src ="http://www.cnblogs.com/xiaosonl/aggbug/1222185.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43036/" target="_blank">[新闻]OpenOffice.org 3.0.0发布</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>ASP.NET中使用反射将控件值与实体值相互映射</title><link>http://www.cnblogs.com/xiaosonl/archive/2008/05/24/1206458.html</link><dc:creator>xiaosonl</dc:creator><author>xiaosonl</author><pubDate>Sat, 24 May 2008 08:25:00 GMT</pubDate><guid>http://www.cnblogs.com/xiaosonl/archive/2008/05/24/1206458.html</guid><wfw:comment>http://www.cnblogs.com/xiaosonl/comments/1206458.html</wfw:comment><comments>http://www.cnblogs.com/xiaosonl/archive/2008/05/24/1206458.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiaosonl/comments/commentRss/1206458.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiaosonl/services/trackbacks/1206458.html</trackback:ping><description><![CDATA[摘要: 在ASP.NET中, 我们要获取控件的值, 或是给控件赋值, 一般都是Control.Property = Entity.Property, Entity.Property = Control.Property.如果控件太多,这样写就显的繁琐,而且容易出错.这种情况下, 使用反射, 把符合控件名和实体属性名相同的值相互映射,只要一行代码就可以完成操作了.来看主要的两个方法签名:Code highl&nbsp;&nbsp;<a href='http://www.cnblogs.com/xiaosonl/archive/2008/05/24/1206458.html'>阅读全文</a><img src ="http://www.cnblogs.com/xiaosonl/aggbug/1206458.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43033/" target="_blank">[新闻]Linux终于迎来了“同等”的Flash播放器</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>运行时编译执行代码的又一应用, 仅供娱乐</title><link>http://www.cnblogs.com/xiaosonl/archive/2008/05/06/1185952.html</link><dc:creator>xiaosonl</dc:creator><author>xiaosonl</author><pubDate>Tue, 06 May 2008 15:12:00 GMT</pubDate><guid>http://www.cnblogs.com/xiaosonl/archive/2008/05/06/1185952.html</guid><wfw:comment>http://www.cnblogs.com/xiaosonl/comments/1185952.html</wfw:comment><comments>http://www.cnblogs.com/xiaosonl/archive/2008/05/06/1185952.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiaosonl/comments/commentRss/1185952.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiaosonl/services/trackbacks/1185952.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 之前写的那篇&lt;&lt;<a id="AjaxHolder_ctl01_TitleUrl" href="http://www.cnblogs.com/xiaosonl/archive/2008/05/05/1184021.html">一个极其简单的在线C#IDE例子</a>&gt;&gt;, 貌似很合大众胃口.这次我又想到一个种运行时编译执行代码的应用, 不过比较简单就是.<br />
<br />
&nbsp;&nbsp;&nbsp; 比如Math.dll程序集有个计算器的类<br />
<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 />
--><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;Account<br />
<img id="Codehighlighter1_18_193_Open_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_18_193_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_18_193_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_18_193_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_18_193_Closed_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_18_193_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_18_193_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_18_193_Open_Text').style.display='inline';" alt="" align="top" /></span><span id="Codehighlighter1_18_193_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_18_193_Open_Text"><span style="color: #000000;">{<br />
<img id="Codehighlighter1_24_69_Open_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_24_69_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_24_69_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_24_69_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_24_69_Closed_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_24_69_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_24_69_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_24_69_Open_Text').style.display='inline';" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_24_69_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;">/**/</span><span id="Codehighlighter1_24_69_Open_Text"><span style="color: #808080;">///</span><span style="color: #008000;">&nbsp;</span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">///</span><span style="color: #008000;">&nbsp;计算器<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">///</span><span style="color: #008000;">&nbsp;</span><span style="color: #808080;">&lt;/summary&gt;</span></span><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" /><span style="color: #000000;">&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;Calcualtor<br />
<img id="Codehighlighter1_101_191_Open_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_101_191_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_101_191_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_101_191_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_101_191_Closed_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_101_191_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_101_191_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_101_191_Open_Text').style.display='inline';" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_101_191_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_101_191_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;Add(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;y)<br />
<img id="Codehighlighter1_148_185_Open_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_148_185_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_148_185_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_148_185_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_148_185_Closed_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_148_185_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_148_185_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_148_185_Open_Text').style.display='inline';" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_148_185_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_148_185_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;x&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;y;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" />}</span></span></div>
<br />
&nbsp;&nbsp;&nbsp; 现在我们的程序当中, 要使用计算器的功能.但是我们还并没有具体的<span id="Codehighlighter1_18_193_Open_Text"><span style="color: #000000;">Calcualtor类, 所以我们用一个接口来表示:<br />
</span></span>
<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 />
--><img id="Codehighlighter1_4_51_Open_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_4_51_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_4_51_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_4_51_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_4_51_Closed_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_4_51_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_4_51_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_4_51_Open_Text').style.display='inline';" alt="" align="top" /><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_4_51_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;">/**/</span><span id="Codehighlighter1_4_51_Open_Text"><span style="color: #808080;">///</span><span style="color: #008000;">&nbsp;</span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">///</span><span style="color: #008000;">&nbsp;计算器接口<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">///</span><span style="color: #008000;">&nbsp;</span><span style="color: #808080;">&lt;/summary&gt;</span></span><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">interface</span><span style="color: #000000;">&nbsp;ICalculator<br />
<img id="Codehighlighter1_88_126_Open_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_88_126_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_88_126_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_88_126_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_88_126_Closed_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_88_126_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_88_126_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_88_126_Open_Text').style.display='inline';" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_88_126_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_88_126_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;Add(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;y);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br />
&nbsp;&nbsp;&nbsp; 在依赖注入中,经常会这么做.但是,这时候的Calcualtor类并没有实现ICalcualtor这个接口.怎么办?看测试:<br />
<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 />
--><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;Microsoft.VisualStudio.TestTools.UnitTesting;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;TestDynamicObjectPool<br />
<img id="Codehighlighter1_85_618_Open_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_85_618_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_85_618_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_85_618_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_85_618_Closed_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_85_618_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_85_618_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_85_618_Open_Text').style.display='inline';" alt="" align="top" /></span><span id="Codehighlighter1_85_618_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_85_618_Open_Text"><span style="color: #000000;">{<br />
<img id="Codehighlighter1_91_138_Open_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_91_138_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_91_138_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_91_138_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_91_138_Closed_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_91_138_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_91_138_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_91_138_Open_Text').style.display='inline';" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_91_138_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;">/**/</span><span id="Codehighlighter1_91_138_Open_Text"><span style="color: #808080;">///</span><span style="color: #008000;">&nbsp;</span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">///</span><span style="color: #008000;">&nbsp;计算器接口<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">///</span><span style="color: #008000;">&nbsp;</span><span style="color: #808080;">&lt;/summary&gt;</span></span><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" /><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">interface</span><span style="color: #000000;">&nbsp;ICalculator<br />
<img id="Codehighlighter1_175_213_Open_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_175_213_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_175_213_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_175_213_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_175_213_Closed_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_175_213_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_175_213_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_175_213_Open_Text').style.display='inline';" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_175_213_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_175_213_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;Add(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;y);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;[TestClass()]<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&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;DynamicObjectPoolTest<br />
<img id="Codehighlighter1_276_616_Open_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_276_616_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_276_616_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_276_616_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_276_616_Closed_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_276_616_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_276_616_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_276_616_Open_Text').style.display='inline';" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_276_616_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_276_616_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[TestMethod()]<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;GetInstanceTest()<br />
<img id="Codehighlighter1_347_610_Open_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_347_610_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_347_610_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_347_610_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_347_610_Closed_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_347_610_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_347_610_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_347_610_Open_Text').style.display='inline';" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_347_610_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_347_610_Open_Text"><span style="color: #000000;">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">参数按顺序为:目标类程序集,目标类Namespace,目标类名,所依赖的其它程序集(这里为测试自身程序集)</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ICalculator&nbsp;proxy&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;DynamicObject.GetObject</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">ICalculator</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">(</span><span style="color: #800000;">"</span><span style="color: #800000;">Account</span><span style="color: #800000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">Account</span><span style="color: #800000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">Calcualtor</span><span style="color: #800000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">TestDynamicObjectPool.dll</span><span style="color: #800000;">"</span><span style="color: #000000;">);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Assert.AreEqual(</span><span style="color: #800080;">2</span><span style="color: #000000;">,&nbsp;proxy.Add(</span><span style="color: #800080;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #800080;">1</span><span style="color: #000000;">));<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" />}</span></span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span></div>
&nbsp;&nbsp;&nbsp; 使用ICalculator就可以调用到Calculator类的方法实现了.<br />
&nbsp;&nbsp;&nbsp;  实现的原理很土很简单, 就是动态生成一个代理类:<br />
<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 />
--><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;System.Collections.Generic;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;DynamicProxy<br />
<img id="Codehighlighter1_72_168_Open_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_72_168_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_72_168_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_72_168_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_72_168_Closed_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_72_168_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_72_168_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_72_168_Open_Text').style.display='inline';" alt="" align="top" /></span><span id="Codehighlighter1_72_168_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_72_168_Open_Text"><span style="color: #000000;">{<br />
<img id="Codehighlighter1_163_166_Open_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_163_166_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_163_166_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_163_166_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_163_166_Closed_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_163_166_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_163_166_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_163_166_Open_Text').style.display='inline';" alt="" align="top" />&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;CalcualtorProxy&nbsp;:&nbsp;Account.Calcualtor,&nbsp;TestDynamicObjectPool.ICalcualtor&nbsp;</span><span id="Codehighlighter1_163_166_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_163_166_Open_Text"><span style="color: #000000;">{&nbsp;}</span></span><span style="color: #000000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" />}</span></span></div>
&nbsp;&nbsp;&nbsp; 这种方法的拘束很大, 比如目标类必需可以被继承,要有无参构造函数等.这里纯粹是说个想法, 仅供娱乐.<br />
<br />
&nbsp;&nbsp; 完整代码下载 : <a title="DynamicObjectPool.rar" href="http://www.cnblogs.com/Files/xiaosonl/DynamicObjectPool.rar">DynamicObjectPool.rar</a><br />
<img src ="http://www.cnblogs.com/xiaosonl/aggbug/1185952.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43032/" target="_blank">[新闻]百度和讯全财经网正式上线</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>一个极其简单的在线C#IDE例子</title><link>http://www.cnblogs.com/xiaosonl/archive/2008/05/05/1184021.html</link><dc:creator>xiaosonl</dc:creator><author>xiaosonl</author><pubDate>Mon, 05 May 2008 12:56:00 GMT</pubDate><guid>http://www.cnblogs.com/xiaosonl/archive/2008/05/05/1184021.html</guid><wfw:comment>http://www.cnblogs.com/xiaosonl/comments/1184021.html</wfw:comment><comments>http://www.cnblogs.com/xiaosonl/archive/2008/05/05/1184021.html#Feedback</comments><slash:comments>27</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiaosonl/comments/commentRss/1184021.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiaosonl/services/trackbacks/1184021.html</trackback:ping><description><![CDATA[摘要:       五一时去朋友那, 他问了个小问题, 只要写几十行代码就可以很好的说明问题.可偏偏机子没装VS, 只好做罢.回来后想想, 要是有个在线的C#IDE就好了.于是上网查了下相关的资料,  整出来个简单的在线C#IDE.<br>      做这个,主要要解决两个问题, 一是如果将网页上文本框的代码编译并执行;二是如果将程序运行结果在网页上输出.<br>      第一个问题不难, .NET已经有现成的C#编译类CSharpCodeProvider(或是其它语言的),再使用CompilerParameters类做为编译参数,就可以很容易的实现.<br>      第二个问题, 举最简单情况, 就是将Console.Write方法输出的内容在网页上显示出来.这其实也很好办,只要在编译之前, 在输出语句做一个替换, 将输出的内容存到另一个地方.等运行结束后, 再从那个地方取出来就是了.&nbsp;&nbsp;<a href='http://www.cnblogs.com/xiaosonl/archive/2008/05/05/1184021.html'>阅读全文</a><img src ="http://www.cnblogs.com/xiaosonl/aggbug/1184021.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43031/" target="_blank">[新闻]微软将于明天召开Blue Hat安全大会</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>FastDev介绍系列之[数据规则验证](上)</title><link>http://www.cnblogs.com/xiaosonl/archive/2008/05/04/1181020.html</link><dc:creator>xiaosonl</dc:creator><author>xiaosonl</author><pubDate>Sat, 03 May 2008 16:04:00 GMT</pubDate><guid>http://www.cnblogs.com/xiaosonl/archive/2008/05/04/1181020.html</guid><wfw:comment>http://www.cnblogs.com/xiaosonl/comments/1181020.html</wfw:comment><comments>http://www.cnblogs.com/xiaosonl/archive/2008/05/04/1181020.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiaosonl/comments/commentRss/1181020.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiaosonl/services/trackbacks/1181020.html</trackback:ping><description><![CDATA[摘要: 我们在写程序当中, 经常需要检验数据是否符合规则, 比如不能为空, 必需为Email或手机格式等.于是, 在我们的代码中, 就会出现很多重复的诸如此类的校验代码.然后我就想到, 用Attribute的方式, 为需要校验的对象属性加上规则, 再用统一的方法去获取并校验数据是否符合规则.Attribute的定义如下:Code highlighting produced by Actipro CodeH&nbsp;&nbsp;<a href='http://www.cnblogs.com/xiaosonl/archive/2008/05/04/1181020.html'>阅读全文</a><img src ="http://www.cnblogs.com/xiaosonl/aggbug/1181020.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43030/" target="_blank">[新闻]超强的支付宝Flash招聘广告</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>FastDev介绍系列之[数据类型转换类]</title><link>http://www.cnblogs.com/xiaosonl/archive/2008/05/02/1179947.html</link><dc:creator>xiaosonl</dc:creator><author>xiaosonl</author><pubDate>Fri, 02 May 2008 15:58:00 GMT</pubDate><guid>http://www.cnblogs.com/xiaosonl/archive/2008/05/02/1179947.html</guid><wfw:comment>http://www.cnblogs.com/xiaosonl/comments/1179947.html</wfw:comment><comments>http://www.cnblogs.com/xiaosonl/archive/2008/05/02/1179947.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiaosonl/comments/commentRss/1179947.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiaosonl/services/trackbacks/1179947.html</trackback:ping><description><![CDATA[摘要: 这是FastDev.Core程序集中的一个类Converters, 用于数据类型转换.使用方法: Converters.ChangeType&lt;T&gt;(toChangeObject) 或 toChangeObject.ChangeType&lt;T&gt;() 测试如下:Code highlighting produced by Actipro CodeHighlighter (freew&nbsp;&nbsp;<a href='http://www.cnblogs.com/xiaosonl/archive/2008/05/02/1179947.html'>阅读全文</a><img src ="http://www.cnblogs.com/xiaosonl/aggbug/1179947.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43029/" target="_blank">[新闻]给Netscape的安慰，回首Firefox 4年风雨路</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>FastDev介绍系列之[邮件发送组件]</title><link>http://www.cnblogs.com/xiaosonl/archive/2008/05/01/1178962.html</link><dc:creator>xiaosonl</dc:creator><author>xiaosonl</author><pubDate>Thu, 01 May 2008 13:53:00 GMT</pubDate><guid>http://www.cnblogs.com/xiaosonl/archive/2008/05/01/1178962.html</guid><wfw:comment>http://www.cnblogs.com/xiaosonl/comments/1178962.html</wfw:comment><comments>http://www.cnblogs.com/xiaosonl/archive/2008/05/01/1178962.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiaosonl/comments/commentRss/1178962.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiaosonl/services/trackbacks/1178962.html</trackback:ping><description><![CDATA[FastDev是我这一年来, 在开发中总结积累而写的一些方便开发的组件.主要是用于ASP.NET开发.像邮件发送组件,静态页组件,数据验证组件等等.<br />
今天先介绍一下这个邮件发送组件.<br />
先说使用啊,首先是配置文件, FastDev.config, 放置于根目录下.<br />
<br />
<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: #000000;">&lt;</span><span style="color: #000000;">?xml&nbsp;version</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">1.0</span><span style="color: #000000;">"</span><span style="color: #000000;">?</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">configuration&nbsp;xmlns</span><span style="color: #800000;">:xsi</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://www.w3.org/2001/XMLSchema-instance</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;&nbsp;xsi</span><span style="color: #800000;">:noNamespaceSchemaLocation</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">FastDev.xsd</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">configSections</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">sectionGroup&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">FastDev</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">section&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">Mail</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">type</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">FastDev.Mail.MailConfig,&nbsp;FastDev.Mail</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;allowDefinition</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">Everywhere</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;allowLocation</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">true</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">sectionGroup</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">configSections</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">FastDev</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Mail</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Configs</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">add&nbsp;Name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">163</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;FromAddress</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">xiaosonl@163.com</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;UserName</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">xiaosonl</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;Password</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">XXX</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">!--EnableSsl是否使用SSL加密</span><span style="color: #000000;">,</span><span style="color: #000000;">例如GMail就使用SSL</span><span style="color: #000000;">.</span><span style="color: #000000;">--</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">add&nbsp;Name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">gmail</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;FromAddress</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">xiaosonl@gmail.com</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;UserName</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">xiaosonl@gmail.com</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;Password</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">XXX</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;EnableSsl</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">true</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;Port</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">587</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">Configs</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">Mail</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">FastDev</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">configuration</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span></div>
<br />
每个&lt;add /&gt;节点对应一个MailClient类的配置, 使用MailClientManager.GetMailClient方法获取指定的MailClient, 接受名称或顺序参数:<br />
<br />
<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 />
--><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;MailClient&nbsp;GetMailClient(</span><span style="color: #0000ff;">string</span><span style="color: #000000;">&nbsp;name)<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;MailClient&nbsp;GetMailClient(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;index)</span></div>
<br />
然后是发邮件方法:<br />
<br />
<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 />
--><img id="Codehighlighter1_8_248_Open_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_8_248_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_8_248_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_8_248_Closed_Text').style.display='inline';" alt="" align="top" /><img id="Codehighlighter1_8_248_Closed_Image" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_8_248_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_8_248_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_8_248_Open_Text').style.display='inline';" alt="" align="top" /><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_8_248_Closed_Text" style="border: 1px solid #808080; background-color: #ffffff; display: none;">/**/</span><span id="Codehighlighter1_8_248_Open_Text"><span style="color: #808080;">///</span><span style="color: #008000;">&nbsp;</span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">///</span><span style="color: #008000;">&nbsp;发送邮件<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">///</span><span style="color: #008000;">&nbsp;</span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">///</span><span style="color: #008000;">&nbsp;</span><span style="color: #808080;">&lt;param&nbsp;name="subject"&gt;</span><span style="color: #008000;">标题</span><span style="color: #808080;">&lt;/param&gt;</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">///</span><span style="color: #008000;">&nbsp;</span><span style="color: #808080;">&lt;param&nbsp;name="body"&gt;</span><span style="color: #008000;">正文</span><span style="color: #808080;">&lt;/param&gt;</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">///</span><span style="color: #008000;">&nbsp;</span><span style="color: #808080;">&lt;param&nbsp;name="toAddress"&gt;</span><span style="color: #008000;">接收方地址</span><span style="color: #808080;">&lt;/param&gt;</span><span style="color: #008000;"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080;">///</span><span style="color: #008000;">&nbsp;</span><span style="color: #808080;">&lt;param&nbsp;name="isAsync"&gt;</span><span style="color: #008000;">是否异步发送</span><span style="color: #808080;">&lt;/param&gt;</span></span><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;SendMail(</span><span style="color: #0000ff;">string</span><span style="color: #000000;">&nbsp;subject,&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">&nbsp;body,&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">&nbsp;toAddress,&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;isAsync)</span></div>
<br />
调用MailClient.SendMail方法发送就可以了.<br />
<br />
源代码及示例下载: <a title="FastDev.Mail.rar" href="http://www.cnblogs.com/Files/xiaosonl/FastDev.Mail.rar">FastDev.Mail.rar</a><br />
<img src ="http://www.cnblogs.com/xiaosonl/aggbug/1178962.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43026/" target="_blank">[新闻]微软与开源</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>博客重开!</title><link>http://www.cnblogs.com/xiaosonl/archive/2008/05/01/1178918.html</link><dc:creator>xiaosonl</dc:creator><author>xiaosonl</author><pubDate>Thu, 01 May 2008 13:10:00 GMT</pubDate><guid>http://www.cnblogs.com/xiaosonl/archive/2008/05/01/1178918.html</guid><wfw:comment>http://www.cnblogs.com/xiaosonl/comments/1178918.html</wfw:comment><comments>http://www.cnblogs.com/xiaosonl/archive/2008/05/01/1178918.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiaosonl/comments/commentRss/1178918.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiaosonl/services/trackbacks/1178918.html</trackback:ping><description><![CDATA[想想还是有空就写写博客算了.<br />
<img src ="http://www.cnblogs.com/xiaosonl/aggbug/1178918.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43026/" target="_blank">[新闻]微软与开源</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>改进了下之前的那个分页DataList控件</title><link>http://www.cnblogs.com/xiaosonl/archive/2007/06/25/795216.html</link><dc:creator>xiaosonl</dc:creator><author>xiaosonl</author><pubDate>Mon, 25 Jun 2007 09:12:00 GMT</pubDate><guid>http://www.cnblogs.com/xiaosonl/archive/2007/06/25/795216.html</guid><wfw:comment>http://www.cnblogs.com/xiaosonl/comments/795216.html</wfw:comment><comments>http://www.cnblogs.com/xiaosonl/archive/2007/06/25/795216.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiaosonl/comments/commentRss/795216.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiaosonl/services/trackbacks/795216.html</trackback:ping><description><![CDATA[之前写的那篇&lt;&lt;<a title="发布一个未完善的分页DataList控件 -- pagedatalist" href="http://www.cnblogs.com/xiaosonl/archive/2007/05/03/735183.html">发布一个未完善的分页DataList控件 -- PageDataList&gt;&gt;</a><br>没看过的请先看看.<br><br>这次主要几个改进:<br>1.修正了几个明显的BUG.<br><br>2.FootTemplate中的分页子控件为可选的,比如只需上一页和下一页,就只要像下面这样写就可以了.<br><span style="color: #000000;">&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">FooterTemplate</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"></span><span style="color: #0000ff;"></span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">asp:HyperLink&nbsp;</span><span style="color: #ff0000;">ID&nbsp;</span><span style="color: #0000ff;">=&nbsp;"lnkPageUp"</span><span style="color: #ff0000;">&nbsp;Text&nbsp;</span><span style="color: #0000ff;">=&nbsp;"上一页"</span><span style="color: #ff0000;">&nbsp;runat&nbsp;</span><span style="color: #0000ff;">=&nbsp;"server"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"></span><span style="color: #000000;"></span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">asp:HyperLink&nbsp;</span><span style="color: #ff0000;">ID&nbsp;</span><span style="color: #0000ff;">=&nbsp;"lnkPageDown"</span><span style="color: #ff0000;">&nbsp;Text&nbsp;</span><span style="color: #0000ff;">=&nbsp;"下一页"</span><span style="color: #ff0000;">&nbsp;&nbsp;runat&nbsp;</span><span style="color: #0000ff;">=&nbsp;"server"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"></span><span style="color: #0000ff;"></span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">FooterTemplate</span><span style="color: #0000ff;">&gt;<br><br></span>3.改进的分页参数.可以自动识别URL在其后加上page=XX用于标识当前页.<br><br><a  href="http://www.cnblogs.com/Files/xiaosonl/PageDataList1.1.rar">PageDataList1.1.rar</a><br><br><br>  <img src ="http://www.cnblogs.com/xiaosonl/aggbug/795216.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43025/" target="_blank">[新闻]首届中国优秀软件创新大赛正式启动</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>自己整理的NBear学习资料,想学NBear的朋友可以下来看看!</title><link>http://www.cnblogs.com/xiaosonl/archive/2007/05/21/753762.html</link><dc:creator>xiaosonl</dc:creator><author>xiaosonl</author><pubDate>Mon, 21 May 2007 01:44:00 GMT</pubDate><guid>http://www.cnblogs.com/xiaosonl/archive/2007/05/21/753762.html</guid><wfw:comment>http://www.cnblogs.com/xiaosonl/comments/753762.html</wfw:comment><comments>http://www.cnblogs.com/xiaosonl/archive/2007/05/21/753762.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiaosonl/comments/commentRss/753762.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiaosonl/services/trackbacks/753762.html</trackback:ping><description><![CDATA[前一两周公司要做网站,分析之后决定使用NBear做为ORM工具.于是开始学习NBear,在学习和使用过程中,越来越发现NBear给开发带来的便利.<br>现在把自己整理的学习资料发布上来与大家共享(其实就是Teedy的BLOG的离线版的......).<br><br>Teddy是个挺热心的人,有问题他都会尽快的给予解答.在这里赞一个.<br><br><a href="http://www.cnblogs.com/Files/xiaosonl/NBear%E8%B5%84%E6%96%99.rar"><font color="#002c99">NBear资料.rar</font></a><img src ="http://www.cnblogs.com/xiaosonl/aggbug/753762.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43022/" target="_blank">[新闻]2008年10月16日科技博客精选</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item></channel></rss>