<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DUADSHk8eip7ImA9WxVWGUo.&quot;"><id>tag:blogger.com,1999:blog-1539264213384076775</id><updated>2009-03-02T15:09:39.772+08:00</updated><title>Son of VB.NET</title><subtitle type="html">为VB打气，为VB加油，
用我们的行动，来证明，
VB程序员们是不弱者～</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.sonofvb.net/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.sonofvb.net/" /><author><name>G yc{Son of VB.NET}</name><uri>http://www.blogger.com/profile/10642280584042013225</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/SonOVB" type="application/atom+xml" /><entry gd:etag="W/&quot;CUYCRXcyeSp7ImA9WxRaFUU.&quot;"><id>tag:blogger.com,1999:blog-1539264213384076775.post-6596724209179550842</id><published>2008-12-18T14:49:00.003+08:00</published><updated>2008-12-18T14:52:44.991+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-18T14:52:44.991+08:00</app:edited><title>Comics Service</title><content type="html">Comics Servics 是模仿 WCF 官方事例 Picture Serivce 制作&lt;br /&gt;&lt;br /&gt;主要功能是&lt;br /&gt;&lt;br /&gt;发布漫画的RSS/ATom&lt;br /&gt;&lt;br /&gt;同时生成简单的HTML页面显示。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;实现环境 VS2008 SP1 + .NET 3.5 SP1&lt;br /&gt;&lt;br /&gt;欢迎大家测试～～&lt;br /&gt;&lt;br /&gt;目前是 Beta1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;网址： http://www.codeplex.com/ComicServices&lt;br /&gt;&lt;br /&gt;下载位置 http://www.codeplex.com/ComicServices/Release/ProjectReleases.aspx?ReleaseId=20665&lt;br /&gt;&lt;br /&gt;漫画 样例 下载 http://cid-fdf36fbb7ef0e5e7.skydrive.live.com/self.aspx/Comics%20Servic/sample.Comics.rar&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=ComicServices&amp;amp;DownloadId=52133"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 1033px; CURSOR: hand; HEIGHT: 990px" alt="" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=ComicServices&amp;amp;DownloadId=52133" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=ComicServices&amp;amp;DownloadId=52132"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 1032px; CURSOR: hand; HEIGHT: 726px" alt="" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=ComicServices&amp;amp;DownloadId=52132" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1539264213384076775-6596724209179550842?l=blog.sonofvb.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SonOVB/~4/lvC5O8SyiYs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sonofvb.net/feeds/6596724209179550842/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1539264213384076775&amp;postID=6596724209179550842" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/6596724209179550842?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/6596724209179550842?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SonOVB/~3/lvC5O8SyiYs/comics-service.html" title="Comics Service" /><author><name>G yc{Son of VB.NET}</name><uri>http://www.blogger.com/profile/10642280584042013225</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14927754176143394902" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.sonofvb.net/2008/12/comics-service.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AERno8eSp7ImA9WxVREE4.&quot;"><id>tag:blogger.com,1999:blog-1539264213384076775.post-6367995084733531911</id><published>2008-08-31T20:01:00.000+08:00</published><updated>2009-01-16T01:15:07.471+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-16T01:15:07.471+08:00</app:edited><title /><content type="html">&lt;BR id=ae78&gt; &lt;DIV id=nl6f&gt;最近，在群里讨论的时候看到一个很有趣的需求，所以研究了一下。下面是研究出来来的结果。 &lt;/DIV&gt; &lt;DIV id=ce:f&gt; &lt;/DIV&gt; &lt;P id=nl6f0&gt;有没有想过，想用.NET做一个演示程序或者做个光盘的MENU。但却苦于，机器上没有.NET 而无法运行。 &lt;/P&gt; &lt;P id=nl6f1&gt;或许你认为这个很简单，做个安装程序不就可以了，但实际上，这样自动运行的程序，不适合制作安装程序， 或者说，他应该不需要安装。 &lt;/P&gt; &lt;P id=nl6f2&gt;也许你认为这个也容易，用Dot NET 虚拟机不久好了。没错，用这个，确实可以，不过会有几个问题。 &lt;/P&gt; &lt;P id=nl6f3&gt;第一，会有一个兼容性的问题。毕竟精简了.NET 类库，只有几个少数文件。 &lt;BR id=nl6f4&gt;第二，版权问题。 &lt;/P&gt; &lt;P id=nl6f5&gt;实际上，大家可能都没有注意这个问题，但如果自己找，还是有人说的，飞信 用的那个虚拟机，是购买而来的。因此，你用了用了，就算是盗版了。这个问题，在国内，或许没人深究，但在国外就不同了，这也是我写本文的原因之一。 &lt;/P&gt; &lt;P id=nl6f6&gt;还有，另一种，解决方式，就是用VC++ 写一个引导，不过这对于我们这些不熟悉VC的人，是一个麻烦。 &lt;/P&gt; &lt;P id=nl6f7&gt; &lt;/P&gt; &lt;P id=nl6f8&gt;不知道，大家最近有没有关注 SQL2008呢？尝试过的人，一定会发现一个很细节的不同，那就是，安装的引导界面不同了。 &lt;/P&gt; &lt;P id=nl6f9&gt;&lt;A id=nl6f10 href="http://www.cnblogs.com/images/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image001_2.png"&gt;&lt;IMG id=nl6f11 style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=364 alt=SQL2008 src="http://images.cnblogs.com/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image001_thumb.png" width=519 border=0&gt;&lt;/A&gt; &lt;/P&gt; &lt;P id=nl6f12&gt;实际上，在这个之前，还会有一个东西出来，那就是，提示你 安装 .NET Framework 3.5 SP1 。为什么会这样呢？因为，新的引导程序，就是.NET 做的了。 &lt;/P&gt; &lt;P id=nl6f13&gt; &lt;/P&gt; &lt;P id=nl6f14&gt;&lt;A id=nl6f15 href="http://www.cnblogs.com/images/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image002_2.png"&gt;&lt;IMG id=nl6f16 style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=300 alt=clip_image002 src="http://images.cnblogs.com/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image002_thumb.png" width=452 border=0&gt;&lt;/A&gt; &lt;/P&gt; &lt;P id=nl6f17&gt; &lt;/P&gt; &lt;P id=nl6f18&gt;本文，将会指导你，如何让VS帮助我们生成这样的Loader，在没有安装.NET 的机器上，自动安装.NET Framework， 在已安装的机器上，直接运行程序。 &lt;/P&gt; &lt;P id=nl6f19 style="PADDING-LEFT: 30px"&gt;&lt;SPAN id=nl6f20 style="COLOR: #ff0000"&gt;注意： 由于需要手动修改项目文件， 因此操作错误，可能会使项目出现问题。请在对已有的工程修改前，做好备份。&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=nl6f21&gt;先说一下原理， 做Client程序，应该都会知道ClickOnce，通过它，可以快速制作一个安装程序，来部署项目。在部署的时候，选择依赖，这样在安装的时候，如果客户端，没有相应的组件，就会自动安装。这个就是Bootstrapper，用于检查程序依赖项，并自动安装的启动程序。我们的任务，就是定这个Bootstrapper，将它指向的安装程序，对准我们实际要运行的程序，这样就达到了上面的目的。 &lt;/P&gt; &lt;P id=nl6f22&gt;那么我们开始吧，这里，为了演示，我将新建一个Win Form程序， 当然，你也可以用一个已有的项目，不过，记得要备份哦！ &lt;/P&gt; &lt;P id=nl6f23 dir=ltr&gt;&lt;BR id=nl6f24&gt;1、新建一个项目，名字为 AutorunDotNet。 这里要说明的是，我选择的是.NET 3.5，实际上，你也可以选择.NET 2.0 的程序。另外，要说的一点是，我用的是VB.NET ，但实际上，我们是修改的项目文件，和语言无关。&lt;BR id=nl6f25&gt;&lt;BR id=nl6f26&gt;           &lt;A id=nl6f27 href="http://www.cnblogs.com/images/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image003_2.png"&gt;&lt;IMG id=nl6f28 style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=308 alt=clip_image003 src="http://images.cnblogs.com/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image003_thumb.png" width=511 border=0&gt;&lt;/A&gt; &lt;BR id=nl6f29&gt;2、简单修改一下项目。 （实际上，可以不用做这个。）&lt;BR id=nl6f30&gt;&lt;BR id=nl6f31&gt;           &lt;A id=nl6f32 href="http://www.cnblogs.com/images/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image001%5B12%5D.png"&gt;&lt;IMG id=nl6f33 style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=192 alt=clip_image001[12] src="http://images.cnblogs.com/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image001%5B12%5D_thumb.png" width=244 border=0&gt;&lt;/A&gt; &lt;/P&gt; &lt;P id=nl6f34&gt;3、设置项目依赖。&lt;/P&gt; &lt;P id=nl6f35 style="PADDING-LEFT: 30px"&gt;a.双击解决方案中的“My Project” ，打开项目属性页。&lt;/P&gt; &lt;P id=nl6f36 style="PADDING-LEFT: 30px"&gt;      &lt;A id=nl6f37 href="http://www.cnblogs.com/images/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image005_2.png"&gt;&lt;IMG id=nl6f38 style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=170 alt=clip_image005 src="http://images.cnblogs.com/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image005_thumb.png" width=174 border=0&gt;&lt;/A&gt; &lt;/P&gt; &lt;P id=nl6f39 style="PADDING-LEFT: 30px"&gt;b.选择 “发布” 选项卡， 单击 “系统必备”。&lt;/P&gt; &lt;P id=nl6f40 style="PADDING-LEFT: 30px"&gt;       &lt;A id=nl6f41 href="http://www.cnblogs.com/images/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image006_2.png"&gt;&lt;IMG id=nl6f42 style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=308 alt=clip_image006 src="http://images.cnblogs.com/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image006_thumb.png" width=431 border=0&gt;&lt;/A&gt; &lt;/P&gt; &lt;P id=nl6f43 style="PADDING-LEFT: 30px"&gt;c.在“系统必备”里， 确保选择 “ 创建用于安装系统必备组件的安装程序”， 然后 下发，选择 需要安装的系统必备组件。 最后，在“指定系统必备组件的安装位置” 里，选择 “从与我的应用程序相同的位置下载系统必备组件”， 单击 确定 。（注：你可以不必设置这个，这样，安装程序，会在网络上下载，安装程序。）&lt;/P&gt; &lt;P id=nl6f44 style="PADDING-LEFT: 30px"&gt;       &lt;A id=nl6f45 href="http://www.cnblogs.com/images/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image007_2.png"&gt;&lt;IMG id=nl6f46 style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=266 alt=clip_image007 src="http://images.cnblogs.com/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image007_thumb.png" width=364 border=0&gt;&lt;/A&gt; &lt;/P&gt; &lt;P id=nl6f47&gt; &lt;/P&gt; &lt;P id=nl6f48&gt; &lt;/P&gt; &lt;P id=nl6f49&gt;恩，准备工作差不多了。下面开始修改项目文件吧。&lt;/P&gt; &lt;P id=nl6f50&gt; &lt;/P&gt; &lt;P id=nl6f51&gt;4、编辑项目 &lt;/P&gt; &lt;P id=nl6f52 style="PADDING-LEFT: 30px"&gt;a.卸载项目&lt;BR id=nl6f53&gt;       右键单击项目， 选择 “卸载项目”&lt;BR id=nl6f54&gt;            &lt;A id=nl6f55 href="http://www.cnblogs.com/images/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image008_2.png"&gt;&lt;IMG id=nl6f56 style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=314 alt=clip_image008 src="http://images.cnblogs.com/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image008_thumb.png" width=171 border=0&gt;&lt;/A&gt; &lt;BR id=nl6f57&gt;         注：如果，VS没有显示， 需要打开 “工具” ——“选项”，找到“项目和解决方案”， 选择 “总是显示解决方案”。 &lt;/P&gt; &lt;P id=nl6f58 style="PADDING-LEFT: 30px"&gt;            &lt;A id=nl6f59 href="http://www.cnblogs.com/images/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image009_2.png"&gt;&lt;IMG id=nl6f60 style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=135 alt=clip_image009 src="http://images.cnblogs.com/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image009_thumb.png" width=244 border=0&gt;&lt;/A&gt; &lt;/P&gt; &lt;P id=nl6f61 style="PADDING-LEFT: 30px"&gt;b.编辑项目&lt;/P&gt; &lt;P id=nl6f62 style="PADDING-LEFT: 30px"&gt;         右键 单击“AutotrunDotNet”，选择“编辑 AutorunDotNet.vbProj”。 &lt;BR id=nl6f63&gt;                &lt;A id=nl6f64 href="http://www.cnblogs.com/images/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image010_3.png"&gt;&lt;IMG id=nl6f65 style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=148 alt=clip_image010 src="http://images.cnblogs.com/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image010_thumb.png" width=244 border=0&gt;&lt;/A&gt;  &lt;/P&gt; &lt;P id=nl6f66&gt; &lt;/P&gt; &lt;P id=nl6f67&gt;5、在开的项目文件里，找到以下内容。（默认在项目结尾）&lt;BR id=nl6f68&gt;　　　　&lt;A id=nl6f69 href="http://www.cnblogs.com/images/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image011_2.png"&gt;&lt;IMG id=nl6f70 style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=89 alt=clip_image011 src="http://images.cnblogs.com/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image011_thumb.png" width=562 border=0&gt;&lt;/A&gt; &lt;/P&gt; &lt;P id=nl6f71 style="PADDING-LEFT: 30px"&gt;a.将这段内容改成如下样子。&lt;/P&gt; &lt;P id=nl6f72 style="PADDING-LEFT: 60px"&gt; &lt;/P&gt; &lt;DIV class=cnblogs_code id=nl6f73&gt;&lt;PRE id=nl6f74&gt;&lt;IMG id=Code_Closed_Image_195454 height=16 alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width=11 align=top&gt;&lt;IMG id=Code_Open_Image_195454 height=16 alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width=11 align=top&gt;&lt;SPAN class=cnblogs_code_Collapse id=Code_Closed_Text_195454&gt;Code&lt;/SPAN&gt; &lt;BR id=nl6f75&gt;&lt;SPAN id=nl6f77 style="COLOR: #008000"&gt;&amp;lt;!--&lt;/SPAN&gt;&lt;SPAN id=nl6f78 style="COLOR: #008000"&gt; To modify your build process, add your task inside one of the targets below and uncomment it. &lt;BR id=nl6f79&gt;           Other similar extension points exist, see Microsoft.Common.targets.  &lt;/SPAN&gt;&lt;SPAN id=nl6f80 style="COLOR: #008000"&gt;--&amp;gt;&lt;/SPAN&gt;&lt;BR id=nl6f82&gt;      &lt;SPAN id=nl6f83 style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN id=nl6f84 style="COLOR: #800000"&gt;Target &lt;/SPAN&gt;&lt;SPAN id=nl6f85 style="COLOR: #ff0000"&gt;Name&lt;/SPAN&gt;&lt;SPAN id=nl6f86 style="COLOR: #0000ff"&gt;="BeforeBuild"&lt;/SPAN&gt;&lt;SPAN id=nl6f87 style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;BR id=nl6f89&gt;      &lt;SPAN id=nl6f90 style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN id=nl6f91 style="COLOR: #800000"&gt;Target&lt;/SPAN&gt;&lt;SPAN id=nl6f92 style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;BR id=nl6f94&gt;      &lt;SPAN id=nl6f95 style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN id=nl6f96 style="COLOR: #800000"&gt;Target &lt;/SPAN&gt;&lt;SPAN id=nl6f97 style="COLOR: #ff0000"&gt;Name&lt;/SPAN&gt;&lt;SPAN id=nl6f98 style="COLOR: #0000ff"&gt;="AfterBuild"&lt;/SPAN&gt;&lt;SPAN id=nl6f99 style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;BR id=nl6f101&gt;        &lt;SPAN id=nl6f102 style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN id=nl6f103 style="COLOR: #800000"&gt;GenerateBootstrapper&lt;BR id=nl6f104&gt;          &lt;/SPAN&gt;&lt;SPAN id=nl6f105 style="COLOR: #ff0000"&gt;ApplicationFile&lt;/SPAN&gt;&lt;SPAN id=nl6f106 style="COLOR: #0000ff"&gt;="$(TargetFileName)"&lt;/SPAN&gt;&lt;SPAN id=nl6f107 style="COLOR: #ff0000"&gt; &lt;BR id=nl6f108&gt;          ApplicationName&lt;/SPAN&gt;&lt;SPAN id=nl6f109 style="COLOR: #0000ff"&gt;="$(AssemblyName)"&lt;/SPAN&gt;&lt;SPAN id=nl6f110 style="COLOR: #ff0000"&gt; &lt;BR id=nl6f111&gt;          ApplicationUrl&lt;/SPAN&gt;&lt;SPAN id=nl6f112 style="COLOR: #0000ff"&gt;="$(_DeploymentFormattedApplicationUrl)"&lt;/SPAN&gt;&lt;SPAN id=nl6f113 style="COLOR: #ff0000"&gt; &lt;BR id=nl6f114&gt;          BootstrapperItems&lt;/SPAN&gt;&lt;SPAN id=nl6f115 style="COLOR: #0000ff"&gt;="@(BootstrapperPackage)"&lt;/SPAN&gt;&lt;SPAN id=nl6f116 style="COLOR: #ff0000"&gt; &lt;BR id=nl6f117&gt;          OutputPath&lt;/SPAN&gt;&lt;SPAN id=nl6f118 style="COLOR: #0000ff"&gt;="$(TargetDir)"&lt;/SPAN&gt;&lt;SPAN id=nl6f119 style="COLOR: #ff0000"&gt; &lt;BR id=nl6f120&gt;          ComponentsLocation&lt;/SPAN&gt;&lt;SPAN id=nl6f121 style="COLOR: #0000ff"&gt;="$(BootstrapperComponentsLocation)"&lt;/SPAN&gt;&lt;SPAN id=nl6f122 style="COLOR: #ff0000"&gt; &lt;BR id=nl6f123&gt;          Path&lt;/SPAN&gt;&lt;SPAN id=nl6f124 style="COLOR: #0000ff"&gt;="$(GenerateBootstrapperSdkPath)"&lt;/SPAN&gt; &lt;SPAN id=nl6f126 style="COLOR: #0000ff"&gt;/&amp;gt;&lt;/SPAN&gt;&lt;BR id=nl6f128&gt;      &lt;SPAN id=nl6f129 style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN id=nl6f130 style="COLOR: #800000"&gt;Target&lt;/SPAN&gt;&lt;SPAN id=nl6f131 style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;&lt;BR id=nl6f133&gt;&lt;/PRE&gt;&lt;/DIV&gt; &lt;P id=nl6f134 style="PADDING-LEFT: 60px"&gt; &lt;/P&gt; &lt;P id=nl6f135&gt; &lt;/P&gt; &lt;P id=nl6f136&gt; &lt;/P&gt; &lt;P id=nl6f137 style="PADDING-LEFT: 30px"&gt;b.修改好后，保存。 在右键 单击“AutorunDotNet”项目，选择“重新加载项目”。&lt;/P&gt; &lt;P id=nl6f138 style="PADDING-LEFT: 30px"&gt; &lt;/P&gt; &lt;P id=nl6f139 style="PADDING-LEFT: 30px"&gt;&lt;A id=nl6f140 href="http://www.cnblogs.com/images/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image010%5B1%5D.png"&gt;&lt;IMG id=nl6f141 style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=148 alt=clip_image010[1] src="http://images.cnblogs.com/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image010%5B1%5D_thumb.png" width=244 border=0&gt;&lt;/A&gt; &lt;/P&gt; &lt;P id=nl6f142&gt; &lt;/P&gt; &lt;P id=nl6f143&gt;6、OK，修改完成。编译一下看看。 &lt;/P&gt; &lt;P id=nl6f144&gt; &lt;/P&gt; &lt;P id=nl6f145&gt;如果没有错误，你将会在输出的文件夹下，看到一下内容。 &lt;/P&gt; &lt;P id=nl6f146&gt; &lt;/P&gt; &lt;P id=nl6f147&gt;   &lt;A id=nl6f148 href="http://www.cnblogs.com/images/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image012_2.png"&gt;&lt;IMG id=nl6f149 style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=279 alt=clip_image012 src="http://images.cnblogs.com/cnblogs_com/GSonOVB/WindowsLiveWriter/48cb26a52823.NETAutorun_F2D3/clip_image012_thumb.png" width=524 border=0&gt;&lt;/A&gt; &lt;/P&gt; &lt;P id=nl6f150&gt; &lt;/P&gt; &lt;P id=nl6f151&gt;这个Setup.exe，就是我们要的Loader。 2个文件夹里的是.NET 安装程序 和 Windows Installer 3.1 。 &lt;/P&gt; &lt;P id=nl6f152&gt; &lt;/P&gt; &lt;P id=nl6f153&gt;补充一点， 这个方法，目前还不能自动生成 Autorun.inf 。 &lt;/P&gt; &lt;P id=nl6f154&gt;因此只能我们自己手动写一个了，不是很难。（ 虽然我很想人让它自动，生成，但没有找到相关资料。） &lt;/P&gt; &lt;BLOCKQUOTE id=nl6f155&gt; &lt;P id=nl6f156&gt; Autorun.inf &lt;/P&gt; &lt;DIV class=cnblogs_code id=nl6f157&gt;&lt;PRE id=nl6f158&gt;&lt;SPAN id=nl6f159 style="COLOR: #000000"&gt;&lt;DIV class=cnblogs_code id=nl6f160&gt;&lt;SPAN id=nl6f161 style="COLOR: #800000"&gt;&lt;B id=ppik&gt;[&lt;/B&gt;&lt;/SPAN&gt;&lt;SPAN id=nl6f162 style="COLOR: #800000"&gt;autorun&lt;/SPAN&gt;&lt;SPAN id=nl6f163 style="COLOR: #800000"&gt;&lt;B id=ppik0&gt;]&lt;/B&gt;&lt;/SPAN&gt;&lt;SPAN id=nl6f164 style="COLOR: #000000"&gt;&lt;BR id=nl6f165&gt;open&lt;/SPAN&gt;&lt;SPAN id=nl6f166 style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN id=nl6f167 style="COLOR: #000000"&gt;setup.exe&lt;BR id=nl6f168&gt;icon&lt;/SPAN&gt;&lt;SPAN id=nl6f169 style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN id=nl6f170 style="COLOR: #000000"&gt;setup.exe&lt;/SPAN&gt;&lt;SPAN id=nl6f171 style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN id=nl6f172 style="COLOR: #000000"&gt;0&lt;/SPAN&gt; &lt;/DIV&gt;&lt;BR id=nl6f174&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt; &lt;DIV id=nl6f175&gt; &lt;/DIV&gt; &lt;DIV id=nl6f176&gt;其他说明&lt;/DIV&gt; &lt;P id=nl6f177&gt;这个，我在VS2008 SP1上测试的， 根据MSDN的说法， 这个最低适用于 VS2005 &lt;/P&gt; &lt;P id=nl6f178&gt;如果怕影响当前项目，可以新建一个项目，专门用来做这个～ &lt;/P&gt; &lt;P id=nl6f179&gt; &lt;/P&gt; &lt;P id=nl6f180&gt;还有这里，简单说明一下 &amp;lt;GenerateBootstrapper &amp;gt; 就是用来生成实Bootstrapper 。 &lt;/P&gt; &lt;P id=nl6f181&gt;ApplicationFile="$(TargetFileName)" 这个指定要运行的程序名字，这里这个参数，是默认项目输出的名字。 &lt;/P&gt; &lt;P id=nl6f182&gt;ApplicationName="$(AssemblyName)" 程序的名字，即在执行的时候，提示的。这里是程序集的名字。 &lt;/P&gt; &lt;P id=nl6f183&gt;OutputPath="$(TargetDir)" 输出位置， 这里默认是项目输出的文件夹 &lt;/P&gt; &lt;P id=nl6f184&gt;其他的属性，请参考&lt;A id=nl6f185 href="http://msdn.microsoft.com/zh-cn/library/ms164294.aspx"&gt;&lt;FONT id=nl6f186 color=#810081&gt;http://msdn.microsoft.com/zh-cn/library/ms164294.aspx&lt;/FONT&gt;&lt;/A&gt; &lt;/P&gt; &lt;P id=nl6f187&gt; &lt;/P&gt; &lt;P id=nl6f188&gt;事例代码在这里下载 &lt;A id=nl6f189 title=http://code.msdn.microsoft.com/AutorunDotNET href="http://code.msdn.microsoft.com/AutorunDotNET"&gt;&lt;FONT id=nl6f190 color=#810081&gt;http://code.msdn.microsoft.com/AutorunDotNET&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;BR id=ppik1&gt; &lt;P id=au:w&gt;在这里简述一下，当初在群提出这个问题的情况。（由于实际信息，可能不方便说书，所以，决定，不说！！）&lt;/P&gt; &lt;P id=au:w0&gt; &lt;/P&gt; &lt;P id=au:w1&gt;这个公司，给客户做了一个网站的演示程序，用WinForm作的。 之后，要把这个程序刻录到光盘，送给客户。&lt;/P&gt; &lt;P id=au:w2&gt;但因为是.NET 做的， 在没有.NET 的机器上，程序就无法运行。 反之，有因为商业程序，客户不见得会懂得很多开发信息。也不好让客户自己安装.NET 。&lt;/P&gt; &lt;P id=au:w3&gt;所以，需要一个确保的机制。 在没有.NET的机器上自动安装，之后并自动运行程序。 &lt;/P&gt; &lt;P id=au:w4&gt;实际上，当时在讨论的时候，说了2点，一是 用 飞信的虚机， 二是写一个VC++的程序。&lt;/P&gt; &lt;P id=au:w5&gt;但这2点 都不符合， 一是，客户是 国外的，对用了带版权的东西，有多说头。 二是， 他们公司里面的没有人懂VC++。&lt;/P&gt; &lt;P id=au:w6&gt; &lt;/P&gt; &lt;P id=au:w7&gt; &lt;/P&gt; &lt;P id=au:w8&gt;=================&lt;/P&gt; &lt;P id=au:w9&gt;Q&amp;amp;A&lt;/P&gt; &lt;P id=au:w10&gt;=================&lt;/P&gt; &lt;P id=au:w11&gt;Q：错误 1 系统必备的安装位置未设置为“组件供应商的网站”，无法在磁盘上找到项“.NET Framework 3.5 SP1”中的文件“DotNetFX35SP1dotNetFX20aspnet.msp”。有关详细信息，请参见“帮助”。 &lt;/P&gt; &lt;P id=au:w12&gt;A：VS 2008 SP1 升级后，并没安装.NET 3.5 SP1 完整版的 Bootstrapper，而只是复制了几个文件。 因此，默认是按配置中的信息，从网络上下载的在线安装版本。 你可以按照下面的方法，制作离线的完整版。或者在这里下载完整版的 复制到 Bootstrapper下。&lt;/P&gt; &lt;P id=au:w13&gt; &lt;/P&gt; &lt;P id=au:w14 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt;&lt;SPAN id=au:w15 style="FONT-FAMILY: SimSun"&gt;首先，&lt;/SPAN&gt; &lt;SPAN id=au:w17 style="FONT-FAMILY: SimSun"&gt;去官方，下载&lt;/SPAN&gt;&lt;SPAN id=au:w18 style="FONT-FAMILY: Calibri"&gt; .NET 3.5 Sp1 &lt;/SPAN&gt;&lt;SPAN id=au:w19 style="FONT-FAMILY: SimSun"&gt;完整版&lt;/SPAN&gt; &lt;SPAN id=au:w21 style="FONT-FAMILY: SimSun"&gt;和&lt;/SPAN&gt;&lt;SPAN id=au:w22 style="FONT-FAMILY: Calibri"&gt; 2&lt;/SPAN&gt;&lt;SPAN id=au:w23 style="FONT-FAMILY: SimSun"&gt;个中文语言包（&lt;/SPAN&gt;&lt;SPAN id=au:w24 style="FONT-FAMILY: Calibri"&gt;x86 &lt;/SPAN&gt;&lt;SPAN id=au:w25 style="FONT-FAMILY: SimSun"&gt;和&lt;/SPAN&gt;&lt;SPAN id=au:w26 style="FONT-FAMILY: Calibri"&gt;x64)&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=au:w27 style="PADDING-LEFT: 30px; MARGIN: 0in; FONT-FAMILY: SimSun"&gt;&lt;A id=au:w28 href="http://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe"&gt;http://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe&lt;/A&gt;&lt;/P&gt; &lt;P id=au:w29 style="PADDING-LEFT: 30px; MARGIN: 0in; FONT-FAMILY: SimSun"&gt;&lt;A id=au:w30 href="http://download.microsoft.com/download/7/7/b/77b96978-c805-4674-a9b0-43351e86b41f/dotnetfx35langpack_x64zh-CHS.exe"&gt;http://download.microsoft.com/download/7/7/b/77b96978-c805-4674-a9b0-43351e86b41f/dotnetfx35langpack_x64zh-CHS.exe&lt;/A&gt;&lt;/P&gt; &lt;P id=au:w31 style="PADDING-LEFT: 30px; MARGIN: 0in; FONT-FAMILY: SimSun"&gt;&lt;A id=au:w32 href="http://download.microsoft.com/download/7/7/b/77b96978-c805-4674-a9b0-43351e86b41f/dotnetfx35langpack_x86zh-CHS.exe"&gt;http://download.microsoft.com/download/7/7/b/77b96978-c805-4674-a9b0-43351e86b41f/dotnetfx35langpack_x86zh-CHS.exe&lt;/A&gt;&lt;/P&gt; &lt;P id=au:w33 style="PADDING-LEFT: 30px; MARGIN: 0in; FONT-FAMILY: SimSun"&gt; &lt;/P&gt; &lt;P id=au:w34 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt;&lt;SPAN id=au:w35 style="FONT-FAMILY: SimSun"&gt;然后，找到&lt;/SPAN&gt;&lt;SPAN id=au:w36 style="FONT-FAMILY: Calibri"&gt;Bootstrapper&lt;/SPAN&gt;&lt;SPAN id=au:w37 style="FONT-FAMILY: SimSun"&gt;的本地位置。&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=au:w38 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt;&lt;SPAN id=au:w39 style="FONT-FAMILY: SimSun"&gt;这个位置，默认是&lt;/SPAN&gt;&lt;SPAN id=au:w40 style="FONT-FAMILY: Calibri"&gt;Windows SDK&lt;/SPAN&gt;&lt;SPAN id=au:w41 style="FONT-FAMILY: SimSun"&gt;安装的位置。&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=au:w42 style="PADDING-LEFT: 30px; MARGIN: 0in; FONT-FAMILY: SimSun"&gt;&lt;font size="2"&gt;我这里的位置是 C:Program FilesMicrosoft SDKsWindowsv6.0ABootstrapper &lt;/font&gt;&lt;/P&gt; &lt;P id=au:w43 style="PADDING-LEFT: 30px; MARGIN: 0in; FONT-FAMILY: SimSun"&gt;&lt;SPAN id=au:w44 style="FONT-FAMILY: Calibri"&gt;C &lt;/SPAN&gt;&lt;SPAN id=au:w45 style="FONT-FAMILY: SimSun"&gt;盘是我的系统盘，&lt;/SPAN&gt;&lt;SPAN id=au:w46 style="FONT-FAMILY: Calibri"&gt; V6.0A &lt;/SPAN&gt;&lt;SPAN id=au:w47 style="FONT-FAMILY: SimSun"&gt;是&lt;/SPAN&gt;&lt;SPAN id=au:w48 style="FONT-FAMILY: Calibri"&gt;SDK&lt;/SPAN&gt;&lt;SPAN id=au:w49 style="FONT-FAMILY: SimSun"&gt;的版本号，&lt;/SPAN&gt; &lt;SPAN id=au:w51 style="FONT-FAMILY: SimSun"&gt;如果你安装了其他版本，&lt;/SPAN&gt; &lt;SPAN id=au:w53 style="FONT-FAMILY: SimSun"&gt;有可能会使&lt;/SPAN&gt;&lt;SPAN id=au:w54 style="FONT-FAMILY: Calibri"&gt;Bootstrapper &lt;/SPAN&gt;&lt;SPAN id=au:w55 style="FONT-FAMILY: SimSun"&gt;更改位置&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=au:w56 style="PADDING-LEFT: 30px; MARGIN: 0in; FONT-FAMILY: SimSun"&gt; &lt;/P&gt; &lt;P id=au:w57 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt;&lt;SPAN id=au:w58 style="FONT-FAMILY: SimSun"&gt;在这个文件夹下，可以看到&lt;/SPAN&gt; &lt;SPAN id=au:w60 style="FONT-FAMILY: SimSun"&gt;DotNetFX35SP1&lt;/SPAN&gt; &lt;SPAN id=au:w62 style="FONT-FAMILY: SimSun"&gt;文件夹，把&lt;/SPAN&gt;&lt;SPAN id=au:w63 style="FONT-FAMILY: Calibri"&gt;.NET  &lt;/SPAN&gt;&lt;SPAN id=au:w65 style="FONT-FAMILY: SimSun"&gt;安装程序解压到这里，&lt;/SPAN&gt; &lt;SPAN id=au:w67 style="FONT-FAMILY: SimSun"&gt;如果怕操作失误，可以先备份一下。&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=au:w68 style="PADDING-LEFT: 30px; MARGIN: 0in; FONT-FAMILY: SimSun"&gt; &lt;/P&gt; &lt;P id=au:w69 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt;&lt;SPAN id=au:w70 style="FONT-FAMILY: Calibri"&gt;1&lt;/SPAN&gt;&lt;SPAN id=au:w71 style="FONT-FAMILY: SimSun"&gt;、用&lt;/SPAN&gt;&lt;SPAN id=au:w72 style="FONT-FAMILY: Calibri"&gt;Winrar&lt;/SPAN&gt;&lt;SPAN id=au:w73 style="FONT-FAMILY: SimSun"&gt;等工具，将&lt;/SPAN&gt;&lt;SPAN id=au:w74 style="FONT-FAMILY: Calibri"&gt;dotnetfx35.exe &lt;/SPAN&gt;&lt;SPAN id=au:w75 style="FONT-FAMILY: SimSun"&gt;解压缩。&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=au:w76 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt;&lt;SPAN id=au:w77 style="FONT-FAMILY: Calibri"&gt;2&lt;/SPAN&gt;&lt;SPAN id=au:w78 style="FONT-FAMILY: SimSun"&gt;、打开&lt;/SPAN&gt; &lt;SPAN id=au:w80 style="FONT-FAMILY: SimSun"&gt;解压缩的文件夹，进入到&lt;/SPAN&gt; &lt;SPAN id=au:w82 style="FONT-FAMILY: SimSun"&gt;wcudotNetFramework&lt;/SPAN&gt; &lt;SPAN id=au:w84 style="FONT-FAMILY: SimSun"&gt;（用&lt;/SPAN&gt;&lt;SPAN id=au:w85 style="FONT-FAMILY: Calibri"&gt;WinRAR&lt;/SPAN&gt;&lt;SPAN id=au:w86 style="FONT-FAMILY: SimSun"&gt;查看的时候，有很多&lt;/SPAN&gt;&lt;SPAN id=au:w87 style="FONT-FAMILY: Calibri"&gt;… &lt;/SPAN&gt;&lt;SPAN id=au:w88 style="FONT-FAMILY: SimSun"&gt;原因不明）&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=au:w89 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt;&lt;SPAN id=au:w90 style="FONT-FAMILY: Calibri"&gt;3&lt;/SPAN&gt;&lt;SPAN id=au:w91 style="FONT-FAMILY: SimSun"&gt;、将dotNetFramework&lt;/SPAN&gt;  &lt;SPAN id=au:w94 style="FONT-FAMILY: SimSun"&gt;下的所有内容，复制到&lt;/SPAN&gt;&lt;SPAN id=au:w95 style="FONT-FAMILY: SimSun"&gt;（之前那个&lt;/SPAN&gt;&lt;SPAN id=au:w96 style="FONT-FAMILY: Calibri"&gt;Bootstrapper&lt;/SPAN&gt;&lt;SPAN id=au:w97 style="FONT-FAMILY: SimSun"&gt;里的）&lt;/SPAN&gt; &lt;SPAN id=au:w99 style="FONT-FAMILY: SimSun"&gt;DotNetFX35SP1&lt;/SPAN&gt; &lt;SPAN id=au:w101 style="FONT-FAMILY: SimSun"&gt;下。&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=au:w102 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt;&lt;SPAN id=au:w103 style="FONT-FAMILY: Calibri"&gt;4&lt;/SPAN&gt;&lt;SPAN id=au:w104 style="FONT-FAMILY: SimSun"&gt;、进入DotNetFX35SP1，下的&lt;/SPAN&gt;&lt;SPAN id=au:w105 style="FONT-FAMILY: Calibri"&gt;zh&lt;/SPAN&gt;&lt;SPAN id=au:w106 style="FONT-FAMILY: SimSun"&gt;-CHS &lt;/SPAN&gt;&lt;SPAN id=au:w107 style="FONT-FAMILY: SimSun"&gt;文件夹。&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=au:w108 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt;&lt;SPAN id=au:w109 style="FONT-FAMILY: Calibri"&gt;5&lt;/SPAN&gt;&lt;SPAN id=au:w110 style="FONT-FAMILY: SimSun"&gt;、新建一个名为&lt;/SPAN&gt; &lt;SPAN id=au:w112 style="FONT-FAMILY: SimSun"&gt;DotNetFX35&lt;/SPAN&gt;  &lt;SPAN id=au:w115 style="FONT-FAMILY: SimSun"&gt;文件夹，并进入。&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=au:w116 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt;&lt;SPAN id=au:w117 style="FONT-FAMILY: Calibri"&gt;6&lt;/SPAN&gt;&lt;SPAN id=au:w118 style="FONT-FAMILY: SimSun"&gt;、新建&lt;/SPAN&gt;&lt;SPAN id=au:w119 style="FONT-FAMILY: Calibri"&gt;2&lt;/SPAN&gt;&lt;SPAN id=au:w120 style="FONT-FAMILY: SimSun"&gt;个文件夹，名字分别是&lt;/SPAN&gt; &lt;SPAN id=au:w122 style="FONT-FAMILY: SimSun"&gt;“x64”和&lt;/SPAN&gt; &lt;SPAN id=au:w124 style="FONT-FAMILY: SimSun"&gt;“x86”&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=au:w125 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt;&lt;SPAN id=au:w126 style="FONT-FAMILY: Calibri"&gt;7&lt;/SPAN&gt;&lt;SPAN id=au:w127 style="FONT-FAMILY: SimSun"&gt;、将下载的&lt;/SPAN&gt;&lt;SPAN id=au:w128 style="FONT-FAMILY: Calibri"&gt;x64&lt;/SPAN&gt;&lt;SPAN id=au:w129 style="FONT-FAMILY: SimSun"&gt;语言包&lt;/SPAN&gt; &lt;SPAN id=au:w131 style="FONT-FAMILY: SimSun"&gt;dotnetfx35langpack_x64zh-CHS.exe&lt;/SPAN&gt; &lt;SPAN id=au:w133 style="FONT-FAMILY: SimSun"&gt;复制到&lt;/SPAN&gt; &lt;SPAN id=au:w135 style="FONT-FAMILY: SimSun"&gt;“&lt;/SPAN&gt;&lt;SPAN id=au:w136 style="FONT-FAMILY: Calibri"&gt;x64&lt;/SPAN&gt;&lt;SPAN id=au:w137 style="FONT-FAMILY: SimSun"&gt;”&lt;/SPAN&gt;&lt;SPAN id=au:w138 style="FONT-FAMILY: SimSun"&gt;文件夹下&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=au:w139 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt;&lt;SPAN id=au:w140 style="FONT-FAMILY: Calibri"&gt;8&lt;/SPAN&gt;&lt;SPAN id=au:w141 style="FONT-FAMILY: SimSun"&gt;、将下载的&lt;/SPAN&gt;&lt;SPAN id=au:w142 style="FONT-FAMILY: Calibri"&gt;x86&lt;/SPAN&gt;&lt;SPAN id=au:w143 style="FONT-FAMILY: SimSun"&gt;语言包&lt;/SPAN&gt; &lt;SPAN id=au:w145 style="FONT-FAMILY: SimSun"&gt;dotnetfx35langpack_x86zh-CHS.exe&lt;/SPAN&gt; &lt;SPAN id=au:w147 style="FONT-FAMILY: SimSun"&gt;复制到&lt;/SPAN&gt; &lt;SPAN id=au:w149 style="FONT-FAMILY: SimSun"&gt;“&lt;/SPAN&gt;&lt;SPAN id=au:w150 style="FONT-FAMILY: Calibri"&gt;x86&lt;/SPAN&gt;&lt;SPAN id=au:w151 style="FONT-FAMILY: SimSun"&gt;”文件夹下&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=au:w152 style="PADDING-LEFT: 30px; MARGIN: 0in; FONT-FAMILY: SimSun"&gt; &lt;/P&gt; &lt;P id=au:w153 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt;&lt;SPAN id=au:w154 style="FONT-FAMILY: SimSun"&gt;这样就完成了，你的&lt;/SPAN&gt;&lt;SPAN id=au:w155 style="FONT-FAMILY: Calibri"&gt;VS&lt;/SPAN&gt;&lt;SPAN id=au:w156 style="FONT-FAMILY: SimSun"&gt;应该可以正常的从本地复制&lt;/SPAN&gt;&lt;SPAN id=au:w157 style="FONT-FAMILY: Calibri"&gt; .NET 3.5 &lt;/SPAN&gt;&lt;SPAN id=au:w158 style="FONT-FAMILY: SimSun"&gt;的完整安装。&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=au:w159 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt; &lt;/P&gt; &lt;P id=au:w160 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt;&lt;font size="2"&gt;完整版的下载链接在这里，虽然，很想弄成3个文件， 但没有成功。&lt;/font&gt;&lt;/P&gt; &lt;P id=au:w161 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt;&lt;A id=au:w162 href="http://www.mediafire.com/file/oe3kgyz1eis/DotnetFX35SP1.part1.rar"&gt;&lt;FONT id=au:w163 color=#810081&gt;http://www.mediafire.com/file/oe3kgyz1eis/DotnetFX35SP1.part1.rar&lt;/FONT&gt;&lt;/A&gt;&lt;BR id=au:w164&gt;&lt;A id=au:w165 href="http://www.mediafire.com/file/fxfqb5lxtnd/DotnetFX35SP1.part2.rar"&gt;http://www.mediafire.com/file/fxfqb5lxtnd/DotnetFX35SP1.part2.rar&lt;/A&gt;&lt;BR id=au:w166&gt;&lt;A id=au:w167 href="http://www.mediafire.com/file/pu405auktni/DotnetFX35SP1.part3.rar"&gt;http://www.mediafire.com/file/pu405auktni/DotnetFX35SP1.part3.rar&lt;/A&gt;&lt;BR id=au:w168&gt;&lt;A id=au:w169 href="http://www.mediafire.com/file/2hyammjnr5o/DotnetFX35SP1.part4.rar"&gt;http://www.mediafire.com/file/2hyammjnr5o/DotnetFX35SP1.part4.rar&lt;/A&gt;&lt;/P&gt; &lt;P id=au:w170 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt;&lt;font size="2"&gt;将以上文件解压至 Bootstrapper 文件夹下即可。&lt;/font&gt;&lt;/P&gt; &lt;P id=au:w171 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt;&lt;font size="2"&gt;如果链接出现问题，请回复。&lt;/font&gt;&lt;/P&gt; &lt;P id=au:w172 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt; &lt;/P&gt; &lt;P id=au:w173 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt;&lt;SPAN id=au:w174 style="FONT-FAMILY: Calibri"&gt;PS.&lt;/SPAN&gt;&lt;SPAN id=au:w175 style="FONT-FAMILY: SimSun"&gt;本打算，直接分享一个来的，&lt;/SPAN&gt; &lt;SPAN id=au:w177 style="FONT-FAMILY: SimSun"&gt;结果，看了一下容量，&lt;/SPAN&gt; &lt;SPAN id=au:w179 style="FONT-FAMILY: SimSun"&gt;我晕倒了。&lt;/SPAN&gt;&lt;SPAN id=au:w180 style="FONT-FAMILY: Calibri"&gt; 316MB&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=au:w181 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt;&lt;SPAN id=au:w182 style="FONT-FAMILY: 宋体"&gt;如果能找到一个好的空间的话，&lt;/SPAN&gt; &lt;SPAN id=au:w184 style="FONT-FAMILY: 宋体"&gt;稍后会上传上来。&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=au:w185 style="PADDING-LEFT: 30px; MARGIN: 0in; FONT-FAMILY: 宋体"&gt; &lt;/P&gt; &lt;P id=au:w186 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt;&lt;SPAN id=au:w187 style="FONT-FAMILY: 宋体"&gt;在这里说一个题外话，很多人都说&lt;/SPAN&gt;&lt;SPAN id=au:w188 style="FONT-FAMILY: Calibri"&gt;.NET &lt;/SPAN&gt;&lt;SPAN id=au:w189 style="FONT-FAMILY: 宋体"&gt;太大了。&lt;/SPAN&gt; &lt;SPAN id=au:w191 style="FONT-FAMILY: 宋体"&gt;实际上，一点点细节没有注意。&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=au:w192 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt;&lt;SPAN id=au:w193 style="FONT-FAMILY: Calibri"&gt;.NET 3.5&lt;/SPAN&gt; &lt;SPAN id=au:w195 style="FONT-FAMILY: 宋体"&gt;之后，提供的程序包，里面，实际上包含了&lt;/SPAN&gt;&lt;SPAN id=au:w196 style="FONT-FAMILY: 宋体"&gt; X64 &lt;/SPAN&gt;&lt;SPAN id=au:w197 style="FONT-FAMILY: 宋体"&gt;和&lt;/SPAN&gt;&lt;SPAN id=au:w198 style="FONT-FAMILY: 宋体"&gt;X86 2&lt;/SPAN&gt;&lt;SPAN id=au:w199 style="FONT-FAMILY: 宋体"&gt;个平台的安装程序。另外，由于，&lt;/SPAN&gt;&lt;SPAN id=au:w200 style="FONT-FAMILY: 宋体"&gt;Vista &lt;/SPAN&gt;&lt;SPAN id=au:w201 style="FONT-FAMILY: 宋体"&gt;以上的系统内置&lt;/SPAN&gt;&lt;SPAN id=au:w202 style="FONT-FAMILY: 宋体"&gt;.NET &lt;/SPAN&gt;&lt;SPAN id=au:w203 style="FONT-FAMILY: 宋体"&gt;，因此，对这个平台的安装，又使用了&lt;/SPAN&gt;&lt;SPAN id=au:w204 style="FONT-FAMILY: 宋体"&gt;MSU&lt;/SPAN&gt;&lt;SPAN id=au:w205 style="FONT-FAMILY: 宋体"&gt;。所以，最终，的结果是，包含了&lt;/SPAN&gt;&lt;SPAN id=au:w206 style="FONT-FAMILY: 宋体"&gt;2&lt;/SPAN&gt;&lt;SPAN id=au:w207 style="FONT-FAMILY: 宋体"&gt;类系统的安装程序，每种又有&lt;/SPAN&gt;&lt;SPAN id=au:w208 style="FONT-FAMILY: 宋体"&gt;X86&lt;/SPAN&gt;&lt;SPAN id=au:w209 style="FONT-FAMILY: 宋体"&gt;和&lt;/SPAN&gt;&lt;SPAN id=au:w210 style="FONT-FAMILY: 宋体"&gt;X64&lt;/SPAN&gt;&lt;SPAN id=au:w211 style="FONT-FAMILY: 宋体"&gt;平台的安装文件。&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=au:w212 style="PADDING-LEFT: 30px; MARGIN: 0in"&gt;&lt;SPAN id=au:w213 style="FONT-FAMILY: Calibri"&gt;PS.&lt;/SPAN&gt;&lt;SPAN id=au:w214 style="FONT-FAMILY: 宋体"&gt;刚才瞄了一下，&lt;/SPAN&gt;&lt;SPAN id=au:w215 style="FONT-FAMILY: Calibri"&gt;MSU&lt;/SPAN&gt;&lt;SPAN id=au:w216 style="FONT-FAMILY: 宋体"&gt;里，居然还有一个安腾的&lt;/SPAN&gt;&lt;SPAN id=au:w217 style="FONT-FAMILY: Calibri"&gt;X64&lt;/SPAN&gt;&lt;SPAN id=au:w218 style="FONT-FAMILY: 宋体"&gt;。那上面的就。。。&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=au:w219&gt; &lt;/P&gt; &lt;P id=au:w220&gt;Q:怎样更改引导程序的图标和名称呢? &lt;BR id=au:w221&gt;A:很抱歉，这个生成，图标资源，无法更改。因此，图标只能。。。  以后可能会研究看看，但希望恐怕不大， 因为 VS 所有生成的 安装程序（ClickOnce和MSI） 都是这个图标。但听说ClickOnce ，在.NET 3.5 SP1 有够个重大变革，可以自定义安装界面。不过这个还没有深入研究。如果，放入到光盘上的话，可以通过修改Autorun.inf 更改光盘的显示图标。&lt;BR id=au:w222&gt;[autorun] &lt;BR id=au:w223&gt;open=setup.exe &lt;BR id=au:w224&gt;icon=AutorunDotNet.exe,0 &lt;BR id=au:w225&gt;将Icon指定光盘的图标，可以是个ICO文件。&lt;BR id=au:w226&gt;&lt;BR id=au:w227&gt;至于，文件名称，这个可以自由更改，没有限制。&lt;/P&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1539264213384076775-6367995084733531911?l=blog.sonofvb.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SonOVB/~4/VE4XPhSFqjc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sonofvb.net/feeds/6367995084733531911/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1539264213384076775&amp;postID=6367995084733531911" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/6367995084733531911?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/6367995084733531911?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SonOVB/~3/VE4XPhSFqjc/blog-post.html" title="" /><author><name>G yc{Son of VB.NET}</name><uri>http://www.blogger.com/profile/10642280584042013225</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14927754176143394902" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.sonofvb.net/2008/08/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AERnozfyp7ImA9WxVREE4.&quot;"><id>tag:blogger.com,1999:blog-1539264213384076775.post-6103275907643293653</id><published>2008-08-29T17:28:00.000+08:00</published><updated>2009-01-16T01:15:07.487+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-16T01:15:07.487+08:00</app:edited><title /><content type="html">&lt;H1 class=western id=w:vg&gt;&lt;FONT id=w:vg0 face="新宋体, monospace"&gt;简介使用&lt;/FONT&gt;Sync Services for ADO.NET&lt;FONT id=w:vg1 face="新宋体, monospace"&gt;建立偶尔链接的程序&lt;/FONT&gt;&lt;/H1&gt; &lt;P id=w:vg2 style="MARGIN-BOTTOM: 0in"&gt;&lt;FONT id=w:vg3 face="Cambria, serif"&gt;&lt;FONT id=w:vg4 size=4&gt;&lt;B id=w:vg5&gt;Introduction to Occasionally Connected Applications using Sync Services for ADO.NET&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg6 style="MARGIN-BOTTOM: 0in"&gt;&lt;BR id=w:vg7&gt;&lt;/P&gt; &lt;P id=w:vg8 style="MARGIN-BOTTOM: 0in"&gt;&lt;FONT id=w:vg9 face="宋体, SimSun"&gt;&lt;FONT id=w:vg10 size=2&gt;&lt;FONT id=w:vg11 size=2&gt;&lt;FONT id=w:vg12 size=2&gt;原文链接：&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=w:vg13 face="Calibri, sans-serif"&gt;&lt;FONT id=w:vg14 size=2&gt;&lt;FONT id=w:vg15 size=2&gt;&lt;FONT id=w:vg16 size=2&gt;http://msdn.microsoft.com/en-us/sync/bb887608.aspx&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg17 style="MARGIN-BOTTOM: 0in"&gt;&lt;BR id=w:vg18&gt;&lt;/P&gt; &lt;P class=western id=w:vg19 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;BR id=w:vg20&gt;&lt;BR id=w:vg21&gt;&lt;/P&gt; &lt;P class=western id=w:vg22 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;BR id=w:vg23&gt;&lt;BR id=w:vg24&gt;&lt;/P&gt; &lt;P class=western id=w:vg25 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;BR id=w:vg26&gt;&lt;BR id=w:vg27&gt;&lt;/P&gt; &lt;H2 class=western id=w:vg28 style="BACKGROUND: #ffffff; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg29 face="宋体, SimSun"&gt;&lt;FONT id=w:vg30 size=2&gt;引言&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt; &lt;H2 class=western id=w:vg31 style="BACKGROUND: #ffffff; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg32 size=2&gt;&lt;FONT id=w:vg33 size=2&gt;Introduction&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt; &lt;P class=western id=w:vg34 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg35 face="新宋体, monospace"&gt;移动和远程工作能力在团队中的重要性与日俱增。最重要的是能让当团队中的成员在办公的时候，访问到相同的信息。在多数情况下，这些成员将有某种笔记本电脑，办公桌，智能手机或者&lt;/FONT&gt;PDA&lt;FONT id=w:vg36 face="新宋体, monospace"&gt;。通过这些设备，用户们可以快速访问他们的数据，通过&lt;/FONT&gt;VPN&lt;FONT id=w:vg37 face="新宋体, monospace"&gt;链接或其它方式连接到公司网络，像下面的样子。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg38 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg39 face="宋体, SimSun"&gt;&lt;FONT id=w:vg40 size=3&gt;&lt;FONT id=w:vg41 size=1&gt;&lt;FONT id=w:vg42 face="Verdana, sans-serif"&gt;The ability to support mobile and remote workers is becoming more and more important for organizations every day. It is critical that organizations ensure users have access to the same information they have when they are in the office. In most cases, these workers will have some sort of laptop, office desktop, Smartphone or PDA. From these devices, users may be able to access their data directly through VPN connections, Web servers or some other connectivity method into the corporate networks as seen below.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg43 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;BR id=w:vg44&gt;&lt;BR id=w:vg45&gt;&lt;/P&gt; &lt;P id=w:vg46 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;IMG id=w:vg47 height=528 src="http://docs.google.com/File?id=dggdkn6_226fsmthjfh_b" width=430 align=bottom border=0 name=bb887608&gt;&lt;/P&gt; &lt;P class=western id=w:vg48 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg49 face="新宋体, monospace"&gt;这种解决方案很容易实现。不幸的是，无法令外部员工满意。这类解决方案的主要缺点是：&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg50 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg51 face="Verdana, sans-serif"&gt;&lt;FONT id=w:vg52 size=1&gt;&lt;FONT id=w:vg53 size=1&gt;This type of solution is fairly simple to implement. Unfortunately, for most remote workers it is  less than satisfactory. Some major disadvantages of this type of solution include:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg54 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;BR id=w:vg55&gt;&lt;BR id=w:vg56&gt;&lt;/P&gt; &lt;OL id=w:vg57&gt; &lt;LI id=w:vg58&gt; &lt;P class=western id=w:vg59 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg60 face="新宋体, monospace"&gt;&lt;B id=w:vg61&gt;网络需求&lt;/B&gt;&lt;/FONT&gt;&lt;B id=w:vg62&gt;:&lt;/B&gt;&lt;FONT id=w:vg63 face="新宋体, monospace"&gt;为了能让用户访问他们的信息，远程设备在访问他们的数据时需要不间断的网络连接到过公司网络。对于一些像是在家里工作的员工，这可能不是问题。对于另一些员工，像是经常移动的销售代表，可能很困难。例如，如果一个销售代表访问一个客户，却因为缺乏网络而不能访问清单数据，这将让他很难有效率的完成他的工作。 &lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg64&gt; &lt;P class=western id=w:vg65 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg66 face="新宋体, monospace"&gt;&lt;B id=w:vg67&gt;数据访问速度：&lt;/B&gt; 在典型的&lt;/FONT&gt;C/S&lt;FONT id=w:vg68 face="新宋体, monospace"&gt;企业环境中，用户有着高速网络，是他们快速的获取信息。但是，外部员工普遍使用的是低速的，不可靠的有线或无线的网络。在这个解决方案中，每次用户请求的部分数据都需要被（重新）下载下来，因为没有方法在设备上保存数据。例如，如果一个销售代表在他每次打开程序的时候都需要下载他的产品类表，他将很快因为程序的长时间的等待而变得沮丧。 &lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg69&gt; &lt;P class=western id=w:vg70 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg71 face="新宋体, monospace"&gt;&lt;B id=w:vg72&gt;单点故障：&lt;/B&gt; 在这个解决方案中，所有的用户都将依赖于同一个服务器。如果由于计划的停机维护或者启动失败，而使数据库变得不可用，这将使所有外部员工将不能连接到他们的数据。 &lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg73&gt; &lt;P class=western id=w:vg74 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg75 face="新宋体, monospace"&gt;&lt;B id=w:vg76&gt;服务器的可扩展性：&lt;/B&gt;随着远程工作的员工变多，服务器的性能也受到影响，这将会产生添加额外硬件的需求。&lt;/FONT&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt; &lt;P class=western id=w:vg77 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; LINE-HEIGHT: 140%"&gt;&lt;BR id=w:vg78&gt;&lt;BR id=w:vg79&gt;&lt;/P&gt; &lt;OL id=w:vg80&gt; &lt;LI id=w:vg81&gt; &lt;P class=western id=w:vg82 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; LINE-HEIGHT: 140%"&gt;&lt;B id=w:vg83&gt;&lt;FONT id=w:vg84 size=1&gt;&lt;FONT id=w:vg85 size=1&gt;Network Requirements&lt;/FONT&gt;&lt;/FONT&gt;: &lt;/B&gt;&lt;FONT id=w:vg86 size=1&gt;&lt;FONT id=w:vg87 size=1&gt;In order to allow users to access their information, the remote device needs to have a constant connection to the corporate network while accessing their data. For some workers, such as those who are working from home, this may not be a problem. For others, such as sales reps who are constantly on the move, this may be more difficult. For example, if that sales rep were visiting a customer and was unable to access inventory data because of a lack of network connectivity, it would be very difficult for this user to effectively do their job. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg88&gt; &lt;P class=western id=w:vg89 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; LINE-HEIGHT: 140%"&gt;&lt;B id=w:vg90&gt;&lt;FONT id=w:vg91 size=1&gt;&lt;FONT id=w:vg92 size=1&gt;Data Access Speeds&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;FONT id=w:vg93 size=1&gt;&lt;FONT id=w:vg94 size=1&gt;: In a typical client / server corporate environment, users have high speed networks that allow them quick access to information. Remote workers, however, are typically connected over slow, unreliable wired or wireless networks. With this solution, every piece of data this user needed would need to be downloaded every time it is requested because there is no way to persist the data on the device. For example, if a sales rep is required to download his product list every time he opens his application, he will quickly become frustrated with the time lag required to populate his application with information. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg95&gt; &lt;P class=western id=w:vg96 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; LINE-HEIGHT: 140%"&gt;&lt;B id=w:vg97&gt;&lt;FONT id=w:vg98 size=1&gt;&lt;FONT id=w:vg99 size=1&gt;Single Point of Failure&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;FONT id=w:vg100 size=1&gt;&lt;FONT id=w:vg101 size=1&gt;: With this type of solution, all users are reliant on a single server. If that database becomes unavailable due to planned server downtime or from server failures, all of the remote workers will be disconnected from their data. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg102&gt; &lt;P class=western id=w:vg103 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; LINE-HEIGHT: 140%"&gt;&lt;B id=w:vg104&gt;&lt;FONT id=w:vg105 size=1&gt;&lt;FONT id=w:vg106 size=1&gt;Server Scalability&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;FONT id=w:vg107 size=1&gt;&lt;FONT id=w:vg108 size=1&gt;: As more workers work remotely, the performance of the corporate servers will be affected, leading to a need to add additional hardware.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt; &lt;P class=western id=w:vg109 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; MARGIN-LEFT: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;BR id=w:vg110&gt;&lt;BR id=w:vg111&gt;&lt;/P&gt; &lt;P class=western id=w:vg112 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg113 face="新宋体, monospace"&gt;一种可以替代的解决方案是实现偶尔链接程序（&lt;/FONT&gt;Occasionally Connected Application (OCA)&lt;FONT id=w:vg114 face="新宋体, monospace"&gt;）。&lt;/FONT&gt;OCA&lt;FONT id=w:vg115 face="新宋体, monospace"&gt;允许外部员工持续的访问他们的数据，但不像先前那样，用户直接访问企业数据库（情形），而是用户请求的信息储存在本地用户设备上。为了填充这个本地数据库，&lt;/FONT&gt;OCA&lt;FONT id=w:vg116 face="新宋体, monospace"&gt;程序通常都会包括一些数据同步能力。数据同步是由周期提取储存在客户端数据库（像&lt;/FONT&gt;SQL Server Compact&lt;FONT id=w:vg117 face="新宋体, monospace"&gt;）的信息并同步更改到服务端的数据库（像是&lt;/FONT&gt;SQL Server&lt;FONT id=w:vg118 face="新宋体, monospace"&gt;）。基于同步的解决方案的优势是用户不在需要长时间的持续连接来访问他们的数据。由于数据是保存在本地，它能提供持续的连接来访问他们的数据，将不需要中心数据库的处理。此外，也减小了网络限制和提高访问速度到达设备的速度。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg119 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg120 face="宋体, SimSun"&gt;&lt;FONT id=w:vg121 size=3&gt;&lt;FONT id=w:vg122 size=1&gt;&lt;FONT id=w:vg123 face="Verdana, sans-serif"&gt;One alternative to this solution is to implement an Occasionally Connected Application (OCA). An OCA allows a remote worker to continue to access their data, but unlike the previous scenario where the user accessed the corporate database directly, the information the worker requires is stored locally on the user’s device. In order to populate this user’s local database, an  OCA will typically include some data synchronization capabilities. Data synchronization consists of the ability to periodically take information that is stored in the client database (such as SQL Server Compact) and synchronize changes with a server database (such as SQL Server). The advantage of a synchronization-based  solution is that users are no longer required to have a constant network connection to access their information. Since their data is stored locally they are given constant access to their data while offloading processing requirements from the central database. Furthermore, the user is no longer limited by the network speed and can now access the data at the speed of the device.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=w:vg124 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg125 face="新宋体, monospace"&gt;在下面&lt;/FONT&gt;2&lt;FONT id=w:vg126 face="新宋体, monospace"&gt;个图表中我们见到&lt;/FONT&gt;OCA &lt;FONT id=w:vg127 face="新宋体, monospace"&gt;的例子，数据（用绿色数据库表示）位于外部员工的本地设备上。第一个例子是直接储存到用户设备上的独立的数据库系统中。第二个例子是外部办公室将储存信息到工作组的数据库中，外部办公室的员工可以访问这个数据。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg128 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg129 face="宋体, SimSun"&gt;&lt;FONT id=w:vg130 size=3&gt;&lt;FONT id=w:vg131 size=1&gt;&lt;FONT id=w:vg132 face="Verdana, sans-serif"&gt;In the following two diagrams we can see examples of OCAs where data (represented by a green database) is persisted locally on the remote worker’s device. The first example is of a standalone database system where information is stored directly on the user’s device. The second example is of a remote office where information is stored in a workgroup database within this remote office so that multiple local workers can access the data.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg133 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;IMG id=w:vg134 height=555 src="http://docs.google.com/File?id=dggdkn6_227jz29hd9_b" width=424 align=bottom border=0 name=bb887608&gt;     &lt;IMG id=w:vg135 height=565 src="http://docs.google.com/File?id=dggdkn6_228srkks5gm_b" width=446 align=bottom border=0 name=bb887608&gt;&lt;/P&gt; &lt;P class=western id=w:vg136 style="MARGIN-BOTTOM: 0.14in"&gt;OCA&lt;FONT id=w:vg137 face="新宋体, monospace"&gt;一种常见的扩展是支持多个数据库之间的数据协作。像下面的事例，一个远程的数据库自由的和其它数据库交换信息。这种解决方案当在一个小组成员在偏远位置工作并且不能访问中心数据库时很有用。这些员工经常需要向其他员工共享信息，但是他们不能连接到中央中数据库，他们需要共享信息通过一些像是&lt;/FONT&gt;P2P&lt;FONT id=w:vg138 face="新宋体, monospace"&gt;网络传输。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg139 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg140 face="宋体, SimSun"&gt;&lt;FONT id=w:vg141 size=3&gt;&lt;FONT id=w:vg142 size=1&gt;&lt;FONT id=w:vg143 face="Verdana, sans-serif"&gt;A common extension to this type of OCA is the ability to support data collaboration between databases. As seen below, a remote database is free to exchange information with any other database. This type of solution is useful when a team of people are working in remote locations and do not have access to a central database. These workers often need to share information amongst each other but since they do not have connectivity to the central database they need to share information through some sort of peer-to-peer network.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg144 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;IMG id=w:vg145 height=547 src="http://docs.google.com/File?id=dggdkn6_229c2k97sdx_b" width=461 align=bottom border=0 name=bb887608&gt;&lt;/P&gt; &lt;P class=western id=w:vg146 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg147 face="新宋体, monospace"&gt;在本文剩下的部分里，我们将主要讨论&lt;/FONT&gt;OCA&lt;FONT id=w:vg148 face="新宋体, monospace"&gt;和&lt;/FONT&gt;Sync Services for ADO.NET&lt;FONT id=w:vg149 face="新宋体, monospace"&gt;，这个关键的技术可以使你构建&lt;/FONT&gt;OCA&lt;FONT id=w:vg150 face="新宋体, monospace"&gt;程序。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg151 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg152 face="Verdana, sans-serif"&gt;&lt;FONT id=w:vg153 size=1&gt;&lt;FONT id=w:vg154 size=1&gt;Throughout the rest of this document we will discuss OCAs with a special emphasis on Sync Services for ADO.NET, a key technology that enables developers to build OCAs.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;H2 class=western id=w:vg155&gt;&lt;FONT id=w:vg156 size=4&gt;Sync Services for ADO.NET &lt;/FONT&gt;&lt;FONT id=w:vg157 face="宋体, SimSun"&gt;&lt;FONT id=w:vg158 size=4&gt;和 &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=w:vg159 size=4&gt;the Microsoft Sync Framework&lt;/FONT&gt;&lt;/H2&gt; &lt;H3 class=western id=w:vg160 style="BACKGROUND: #ffffff; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg161 size=2&gt;Sync Services for ADO.NET and the Microsoft Sync Framework&lt;/FONT&gt;&lt;/H3&gt; &lt;P class=western id=w:vg162 style="MARGIN-BOTTOM: 0.14in"&gt;Sync Services for ADO.NET &lt;FONT id=w:vg163 face="新宋体, monospace"&gt;是&lt;FONT id=w:vg164 color=#0033cc&gt;&lt;SPAN id=w:vg165 style="TEXT-DECORATION: none"&gt;&lt;A id=w:vg166 href="http://msdn2.microsoft.com/en-us/sync/default.aspx"&gt;微软同步服务&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/FONT&gt;(MSF)&lt;FONT id=w:vg167 face="新宋体, monospace"&gt;。&lt;/FONT&gt;MSF&lt;FONT id=w:vg168 face="新宋体, monospace"&gt;是一个综合的同步平台，它可以使开发人员添加同步能力到应用程序，服务和设备中。&lt;/FONT&gt;MSF &lt;FONT id=w:vg169 face="新宋体, monospace"&gt;解决了基本的问题，如何同步储存在任何位置中的任何数据类型使用任何协议在任何拓扑。&lt;/FONT&gt;MSF &lt;FONT id=w:vg170 face="新宋体, monospace"&gt;的基本的能力是支持离线和任何类型终结点之间的数据协作（如：设备到桌面，桌面到服务器，等等）。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg171 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg172 face="宋体, SimSun"&gt;&lt;FONT id=w:vg173 size=3&gt;&lt;FONT id=w:vg174 size=1&gt;&lt;FONT id=w:vg175 face="Verdana, sans-serif"&gt;Sync Services for ADO.NET is a part of the &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=w:vg176 color=#0033cc&gt;&lt;SPAN id=w:vg177 style="TEXT-DECORATION: none"&gt;&lt;A id=w:vg178 href="http://msdn2.microsoft.com/en-us/sync/default.aspx"&gt;&lt;FONT id=w:vg179 size=1&gt;&lt;FONT id=w:vg180 face="Verdana, sans-serif"&gt;Microsoft Sync Framework&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT id=w:vg181 size=1&gt;&lt;FONT id=w:vg182 face="Verdana, sans-serif"&gt; (MSF). MSF is a comprehensive synchronization platform that enables developers to add synchronization capabilities to applications, services and devices. MSF solves the fundamental problem of how to synchronize any type of data in any store using any protocol over any topology. Fundamental to MSF is the ability to support offline and collaboration of data between any types of endpoints (e.g. device to desktop, device to server, etc.).&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=w:vg183 style="MARGIN-BOTTOM: 0.14in"&gt;Sync Services for ADO.NET &lt;FONT id=w:vg184 face="新宋体, monospace"&gt;能够同步使用&lt;/FONT&gt;ADO.NET&lt;FONT id=w:vg185 face="新宋体, monospace"&gt;访问的数据库。由于&lt;/FONT&gt;Sync Services for ADO.NET &lt;FONT id=w:vg186 face="新宋体, monospace"&gt;是&lt;/FONT&gt;MSF&lt;FONT id=w:vg187 face="新宋体, monospace"&gt;的一部分，任何使用&lt;/FONT&gt;uses Sync Services for ADO.NET &lt;FONT id=w:vg188 face="新宋体, monospace"&gt;的数据库也能交换信息同其他的数据源，这些都是被&lt;/FONT&gt;MSF&lt;FONT id=w:vg189 face="新宋体, monospace"&gt;所支持的，像是&lt;/FONT&gt;Web &lt;FONT id=w:vg190 face="新宋体, monospace"&gt;服务，文件系统，或者自定义数据储存。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg191 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg192 face="宋体, SimSun"&gt;&lt;FONT id=w:vg193 size=3&gt;&lt;FONT id=w:vg194 size=1&gt;&lt;FONT id=w:vg195 face="Verdana, sans-serif"&gt;Sync Services for ADO.NET enables synchronization between ADO.NET enabled databases. Since Sync Services for ADO.NET is part of the MSF, any database that uses Sync Services for ADO.NET can then also exchange information with other data sources that are supported by MSF, such as web services, file systems or custom data stores.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=w:vg196 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg197 face="新宋体, monospace"&gt;本文重点是在数据库系统中同步信息和&lt;/FONT&gt;Sync Services for ADO.NET &lt;FONT id=w:vg198 face="新宋体, monospace"&gt;将如何帮助开发人员避免许多和&lt;/FONT&gt;OCA&lt;FONT id=w:vg199 face="新宋体, monospace"&gt;相关的常见问题。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg200 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg201 face="Verdana, sans-serif"&gt;&lt;FONT id=w:vg202 size=1&gt;&lt;FONT id=w:vg203 size=1&gt;The primary focus of this document will be on synchronizing information between database systems and how Sync Services for ADO.NET helps developers avoid many of the common issues associated with OCAs.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;H2 class=western id=w:vg204 style="BACKGROUND: #ffffff; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg205 face="宋体, SimSun"&gt;&lt;FONT id=w:vg206 size=2&gt;构建偶尔链接程序的挑战&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=w:vg207 size=2&gt;&lt;FONT id=w:vg208 size=2&gt;Challenges of Building an OCA&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt; &lt;H2 class=western id=w:vg209 style="BACKGROUND: #ffffff; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg210 size=2&gt;&lt;FONT id=w:vg211 size=2&gt;Challenges of Building an OCA&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt; &lt;P class=western id=w:vg212 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg213 face="新宋体, monospace"&gt;对于&lt;/FONT&gt;OCA&lt;FONT id=w:vg214 face="新宋体, monospace"&gt;，用户可以快速的访问他们数据并且不需要网络连接到中央数据中，以便获取他们的数据。&lt;/FONT&gt;OCA&lt;FONT id=w:vg215 face="新宋体, monospace"&gt;，先更新本地数据库，然后将数据更改同步到中心数据库上，而不是直接更新中心数据库。虽然 虽然 &lt;/FONT&gt;OCA&lt;FONT id=w:vg216 face="新宋体, monospace"&gt;解决直接访问中心数据库相关的关键问题，但在建立&lt;/FONT&gt;OCA&lt;FONT id=w:vg217 face="新宋体, monospace"&gt;时还有大量的挑战。下面几节将讨论这些挑战，并提出如何使用&lt;/FONT&gt;Sync Services for ADO.Net &lt;FONT id=w:vg218 face="新宋体, monospace"&gt;来避免这些挑战的建议。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg219 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg220 face="宋体, SimSun"&gt;&lt;FONT id=w:vg221 size=3&gt;&lt;FONT id=w:vg222 size=1&gt;&lt;FONT id=w:vg223 face="Verdana, sans-serif"&gt;With an OCA, users have quick access to their data and do not require a network connection to the central database in order to access their information. With an OCA, updates are made locally and then synchronized into the central database, rather than being made directly at the central database,. Although OCAs solve the key problems associated with directly accesing a central server, there are a number of challenges associated with building OCAs. The following sections will discuss these challenges and propose ways that Sync Services for ADO.Net can be used to avoid these challenges.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;H2 class=western id=w:vg224&gt;&lt;FONT id=w:vg225 face="宋体, SimSun"&gt;修改跟踪&lt;/FONT&gt;&lt;/H2&gt; &lt;H3 class=western id=w:vg226 style="BACKGROUND: #ffffff; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg227 size=2&gt;Change Tracking&lt;/FONT&gt;&lt;/H3&gt; &lt;P class=western id=w:vg228 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg229 face="新宋体, monospace"&gt;为了使数据同步有效，某种修改跟踪的方法是必需的。修改跟中能提供数据库在某一时间点到另一个时间点之间的修改列表（插入、更新、删除）。想象一下，一个远程的用户链接到中央数据库并希望获取他从上次在线到现在的数据。没有修改跟踪，这个用户需要从中心数据源获取所有的数据然后向用户的计算机或设备上的本地数据库中合并数据的修改。在移动环境中，这是极其低效率的，因为使用无线网络交换这种信息将花费大量的时间。如果有大量的数据交换更会特别的慢。不幸的是，如果连接丢失数据则必须重新下载，这将会更加的没有效率。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg230 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg231 face="宋体, SimSun"&gt;&lt;FONT id=w:vg232 size=3&gt;&lt;FONT id=w:vg233 size=1&gt;&lt;FONT id=w:vg234 face="Verdana, sans-serif"&gt;In order to make data synchronization efficient, some method of change tracking is required. Change tracking is the ability to provide a list of changes (insert, updates and deletes) that were made to the database from one point in time to another. Imagine a remote user who connects to the central database and wishes to bring their data up-to-date since the last time they were online. Without change tracking, this user would need to take all of the data from the central data source and then merge that data with the changes that the user made to the local database on the user’s computer or device. In a mobile environment, this is extremely inefficient because of the amount of time a wireless network would take to exchange this information. It would be especially slow if large datasets were exchanged. Furthermore, if the connection drops the data must be re-downloaded, making this even less efficient.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=w:vg235 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg236 face="新宋体, monospace"&gt;为了避免这个问题，通常使用一个修改跟踪系统。一个比较流行的修改跟中方法是通过使用&lt;/FONT&gt;rowversions &lt;FONT id=w:vg237 face="新宋体, monospace"&gt;和触发器（&lt;/FONT&gt;triggers&lt;FONT id=w:vg238 face="新宋体, monospace"&gt;）。这个方法需将&lt;/FONT&gt;rowversion&lt;FONT id=w:vg239 face="新宋体, monospace"&gt;列添加到每个表中。为了删除，可能需要一个独立表或者一个删除标记列通常需要记录这些被删除的行并通过触发器来维护。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg240 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg241 face="宋体, SimSun"&gt;&lt;FONT id=w:vg242 size=3&gt;&lt;FONT id=w:vg243 size=1&gt;&lt;FONT id=w:vg244 face="Verdana, sans-serif"&gt;To avoid these issues, a change-tracking system is typically used. One popular method for change tracking is through the use of rowversions and triggers. This method requires a rowversion column to be added to each table. For deletions, a separate table or a “deleted” flag column is typically required to log these removed rows that are maintained through triggers.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=w:vg245 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg246 face="新宋体, monospace"&gt;这种解决方案的主要缺点有：&lt;/FONT&gt;&lt;/P&gt; &lt;UL id=w:vg247&gt; &lt;LI id=w:vg248&gt; &lt;P id=w:vg249 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg250 face="新宋体, monospace"&gt;必须修改中心数据库的结构，添加列和表，这可能会影响到当前的程序。 &lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg251&gt; &lt;P id=w:vg252 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg253 face="新宋体, monospace"&gt;触发器将在每行被更改后出发，这可能会对性能产生影响。 &lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg254&gt; &lt;P id=w:vg255 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg256 face="新宋体, monospace"&gt;维护正确的&lt;/FONT&gt;rowversions&lt;FONT id=w:vg257 face="新宋体, monospace"&gt;和删除行的逻辑是很复杂的。 &lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg258&gt; &lt;P id=w:vg259 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg260 face="新宋体, monospace"&gt;长时间运行事务将可能会有数据在同步期间丢失，这回照成结果不一致。&lt;/FONT&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt; &lt;P id=w:vg261 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg262 face="Verdana, sans-serif"&gt;&lt;FONT id=w:vg263 size=1&gt;&lt;FONT id=w:vg264 size=1&gt;The major disadvantages to this solution are:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;UL id=w:vg265&gt; &lt;LI id=w:vg266&gt; &lt;P class=western id=w:vg267 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg268 size=1&gt;&lt;FONT id=w:vg269 size=1&gt;Changes are required in the central database schema to add columns and tables that may affect current applications. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg270&gt; &lt;P class=western id=w:vg271 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg272 size=1&gt;&lt;FONT id=w:vg273 size=1&gt;Triggers are fired for each change made to a row, which has performance implications. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg274&gt; &lt;P class=western id=w:vg275 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg276 size=1&gt;&lt;FONT id=w:vg277 size=1&gt;Logic for maintaining proper rowversions and row deletions can get extremely complicated. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg278&gt; &lt;P class=western id=w:vg279 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg280 size=1&gt;&lt;FONT id=w:vg281 size=1&gt;Long running transactions can result in some data being missed during synchronization, resulting in data inconsistencies.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt; &lt;P class=western id=w:vg282 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg283 face="新宋体, monospace"&gt;对于&lt;/FONT&gt;SQL Server 2008&lt;FONT id=w:vg284 face="新宋体, monospace"&gt;，跟踪修改方法将有一个新选择&lt;/FONT&gt;SQL Server 2008 &lt;FONT id=w:vg285 face="新宋体, monospace"&gt;修改跟踪。修改追踪的原理是管理标记几个监视更改的表。之后， &lt;/FONT&gt;SQL Server 2008 &lt;FONT id=w:vg286 face="新宋体, monospace"&gt;将跟踪任何的插入、更新或删除。当远程 “&lt;/FONT&gt;requestor” &lt;FONT id=w:vg287 face="新宋体, monospace"&gt;请求更改，&lt;/FONT&gt;SQL Server 2008 &lt;FONT id=w:vg288 face="新宋体, monospace"&gt;将会提供全部的更改，从“&lt;/FONT&gt;Requestor”&lt;FONT id=w:vg289 face="新宋体, monospace"&gt;指定的最后一次成功下载开始。 &lt;/FONT&gt;Sync Services for ADO.NET &lt;FONT id=w:vg290 face="新宋体, monospace"&gt;使用&lt;/FONT&gt;SQL Server 2008 &lt;FONT id=w:vg291 face="新宋体, monospace"&gt;修改跟踪可以给&lt;/FONT&gt;OCA&lt;FONT id=w:vg292 face="新宋体, monospace"&gt;环境提供以下优势：&lt;/FONT&gt;&lt;/P&gt; &lt;UL id=w:vg293&gt; &lt;LI id=w:vg294&gt; &lt;P id=w:vg295 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg296 face="新宋体, monospace"&gt;不需要修改结构既可以跟踪修改 &lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg297&gt; &lt;P id=w:vg298 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg299 face="新宋体, monospace"&gt;触发器对于修改跟中不是必需的，这意味修改跟中将减少对服务器的影响。在某些情况下，使用发器跟踪的&lt;/FONT&gt;DML&lt;FONT id=w:vg300 face="新宋体, monospace"&gt;开销可能比&lt;/FONT&gt;SQL Server 2008 &lt;FONT id=w:vg301 face="新宋体, monospace"&gt;修改跟踪高&lt;/FONT&gt;400%&lt;FONT id=w:vg302 face="新宋体, monospace"&gt;之多。&lt;/FONT&gt;SQL Server 2008 &lt;FONT id=w:vg303 face="新宋体, monospace"&gt;修改跟踪开销少的原因是维护第二个索引。 &lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg304&gt; &lt;P id=w:vg305 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg306 face="新宋体, monospace"&gt;所有跟踪修改的逻辑都在&lt;/FONT&gt;SQL Server &lt;FONT id=w:vg307 face="新宋体, monospace"&gt;引擎的内部，这样就减少了设置系统类型的复杂性。 &lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg308&gt; &lt;P id=w:vg309 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg310 face="新宋体, monospace"&gt;对于长时间事务的数据一致性问题将不再是问题。 &lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg311&gt; &lt;P id=w:vg312 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg313 face="新宋体, monospace"&gt;包括整合数据库管理特性，像是动态管理视图和安全。&lt;/FONT&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt; &lt;P id=w:vg314 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg315 face="宋体, SimSun"&gt;&lt;FONT id=w:vg316 size=3&gt;&lt;FONT id=w:vg317 size=1&gt;&lt;FONT id=w:vg318 face="Verdana, sans-serif"&gt;SQL Server 2008 has introduced a new alternative method for tracking changes called SQL Server 2008 Change Tracking. The concept behind change tracking is that an administrator marks certain tables to be monitored for changes. From that point SQL Server 2008 keeps tracks of any inserts, updates or deletes that are made. When a remote “requestor” requests changes, SQL Server 2008 will provide all of the changes that have occurred since the last successful download as specified by the requestor. Sync Services for ADO.NET has been built to take advantage of SQL Server 2008 change tracking and provides the following advantages for an OCA environment:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;UL id=w:vg319&gt; &lt;LI id=w:vg320&gt; &lt;P class=western id=w:vg321 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg322 size=1&gt;&lt;FONT id=w:vg323 size=1&gt;No schema changes are required to be able to track changes &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg324&gt; &lt;P class=western id=w:vg325 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg326 size=1&gt;&lt;FONT id=w:vg327 size=1&gt;Triggers are not required for tracking changes, which means that tracking changes has far less of an impact on the server. In certain cases, the DML overhead associated with trigger based change tracking can be 400% greater than that of SQL Server 2008 change tracking. The overhead of enabling SQL Server 2008 change tracking is similar to the overhead of maintaining a second index. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg328&gt; &lt;P class=western id=w:vg329 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg330 size=1&gt;&lt;FONT id=w:vg331 size=1&gt;All of the logic for tracking changes is internal to the SQL Server engine and as such reduces the complexity for setting up this type of system. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg332&gt; &lt;P class=western id=w:vg333 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg334 size=1&gt;&lt;FONT id=w:vg335 size=1&gt;Data consistency issues associated with long running transactions are no longer an issue. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg336&gt; &lt;P class=western id=w:vg337 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg338 size=1&gt;&lt;FONT id=w:vg339 size=1&gt;Includes integrated database administration feature such as Dynamic Management Views and Security&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt; &lt;H2 class=western id=w:vg340&gt;&lt;FONT id=w:vg341 face="宋体, SimSun"&gt;维护数据更改&lt;/FONT&gt;&lt;/H2&gt; &lt;H3 class=western id=w:vg342 style="BACKGROUND: #ffffff; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg343 size=2&gt;Maintaining Change Data&lt;/FONT&gt;&lt;/H3&gt; &lt;P class=western id=w:vg344 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg345 face="新宋体, monospace"&gt;修改跟踪表通常会快速增大，占用磁盘空间和影响查询效率。因此，合理的下一步是决定何时移除修改跟踪。根据用户最后一次同步来清理很困难，因为设备可能还没有同步或者用户只是简单的不使用它。这些因素使得管理员决定何时所有活动用户接受到更改并可以清理更改数据变的困难。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg346 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg347 face="宋体, SimSun"&gt;&lt;FONT id=w:vg348 size=3&gt;&lt;FONT id=w:vg349 size=1&gt;&lt;FONT id=w:vg350 face="Verdana, sans-serif"&gt;Change tracking tables will typically grow quite quickly, taking up storage space and affecting the performance of queries being executed against them. As such, the next logical step is to determine when tracked changes can be removed. Basing cleanup on when users have last synchronized is difficult because a device may have not been synchronized or the user may have simply stopped using it. These factors make it difficult for administrators to determine when all active users have received the changes which would allow them to clean up the change data.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=w:vg351 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg352 face="新宋体, monospace"&gt;在&lt;/FONT&gt;SQL Server 2008&lt;FONT id=w:vg353 face="新宋体, monospace"&gt;中，可以定制阈值，用来维护更改数据和自动清理旧的数据。而且，这是运行时在后台进程，不会对服务器产生性能影响。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg354 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg355 face="宋体, SimSun"&gt;&lt;FONT id=w:vg356 size=3&gt;&lt;FONT id=w:vg357 size=1&gt;&lt;FONT id=w:vg358 face="Verdana, sans-serif"&gt;In SQL Server 2008, customizable retention thresholds are used to maintain this change data and automatically clean up old data. Furthermore, this process runs as a background process to help offset any performance impact on the server.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;H2 class=western id=w:vg359&gt;&lt;FONT id=w:vg360 face="宋体, SimSun"&gt;冲突检测和解决&lt;/FONT&gt;&lt;/H2&gt; &lt;H3 class=western id=w:vg361 style="BACKGROUND: #ffffff; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg362 size=2&gt;Conflict Detection and Resolution&lt;/FONT&gt;&lt;/H3&gt; &lt;P class=western id=w:vg363 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg364 face="新宋体, monospace"&gt;冲突是&lt;/FONT&gt;OCA&lt;FONT id=w:vg365 face="新宋体, monospace"&gt;可能出现的另一个问题。当&lt;/FONT&gt;2&lt;FONT id=w:vg366 face="新宋体, monospace"&gt;个或更多的对同一数据的数据库修改后，同步引擎将尝试将这些修改应用到一个数据库上，这时就发生了冲突。例如，想想一下，有&lt;/FONT&gt;2&lt;FONT id=w:vg367 face="新宋体, monospace"&gt;个销售代表尝试更新同一个客户的&lt;/FONT&gt;2&lt;FONT id=w:vg368 face="新宋体, monospace"&gt;个不同的地址。第一个销售代表成功同步更新了中心数据库。当下一个销售代表同步更新到主数据库中时，就会发生异常，因为当前行的状态和同步引擎期望的不同。有多种方式解决这个问题。例如，以最后一次更新为准或者根据用户的资历进行选择。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg369 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg370 face="宋体, SimSun"&gt;&lt;FONT id=w:vg371 size=3&gt;&lt;FONT id=w:vg372 size=1&gt;&lt;FONT id=w:vg373 face="Verdana, sans-serif"&gt;Conflicts are another issue that can arise in an OCA. Conflicts will occur when two or more databases make a change to the same piece of data and then the synchronization engine tries to apply those into a single database. For example, imagine two sales reps who try to update a customer’s address to two different values. The first sales rep successfully synchronizes the update to the central database. When the next sales rep goes to synchronize the update to the main database, a conflict occurs because the current state of the row is different from what the synchronization engine was expecting. There are a variety of ways to resolve these conflicts. For example, the last change to come in may be the one that wins, or alternatively it may be based on which user has the most seniority.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=w:vg374 style="MARGIN-BOTTOM: 0.14in"&gt;Sync Services for ADO.NET&lt;FONT id=w:vg375 face="新宋体, monospace"&gt;提供使用外部冲突检测和解决的能力配合&lt;/FONT&gt;SQL Server 2008 &lt;FONT id=w:vg376 face="新宋体, monospace"&gt;改进低复杂度的检测数据冲突的体验。使用这个技术，在上个例子中的第一个销售代表将成功更新中心服务器。新值将会被应用，因为至今没有冲突。当第二个销售代表上传更改时，一个冲突将被检测到，因为在中心服务器的变更版本（&lt;/FONT&gt;Change Version&lt;FONT id=w:vg377 face="新宋体, monospace"&gt;）不包含当前销售代表的数据库。之后，远程的程序逻辑将决定如何处理这个冲突。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg378 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg379 face="Verdana, sans-serif"&gt;&lt;FONT id=w:vg380 size=1&gt;&lt;FONT id=w:vg381 size=1&gt;Sync Services for ADO.NET provides conflict detection and resolution capabailities out-of-the-box and SQL Server 2008 improves on this experience by decreasing the complexity associated with identifiying conflicts. By using this technique, the first sales rep in our example will successfully upload the change to the central server. It will be applied since there is no conflict yet. When the second sales rep goes to upload the change, a conflict will be detected because the change version in the central server does not exist in the current sales rep database. From this point, logic in the remote application determines how to handle the conflict.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;H2 class=western id=w:vg382&gt;&lt;FONT id=w:vg383 face="宋体, SimSun"&gt;优先数据交换&lt;/FONT&gt;&lt;/H2&gt; &lt;H3 class=western id=w:vg384 style="BACKGROUND: #ffffff; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg385 size=2&gt;Prioritizing Data Exchange&lt;/FONT&gt;&lt;/H3&gt; &lt;P class=western id=w:vg386 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg387 face="新宋体, monospace"&gt;当&lt;/FONT&gt;OCA&lt;FONT id=w:vg388 face="新宋体, monospace"&gt;成功部署后，通常需要一种方式来优化用户的数据交换一遍限制或者适应低速网络连接。一种优化数据同步的方式是定义数据的优先级，是高优先或者关键。使用优先级数据交换，关键更改将会立即被同步，次重要的数据将会稍后同步。例如，想想一下，当一个用户使用一个慢速网络访问，由于带宽有限，这个用户希望发送单个表的更改（高度重要），而其它表的更改将在之后连接高速网络后发送。对于&lt;/FONT&gt;Sync Services for ADO.NET&lt;FONT id=w:vg389 face="新宋体, monospace"&gt;，同步执行将从远端程序执行，基于表到表和只上传或只下载的同步。这意味着可以指定同步的表，其他的将在稍后同步，并且能够保证所有数据的交换。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg390 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg391 face="Verdana, sans-serif"&gt;&lt;FONT id=w:vg392 size=1&gt;&lt;FONT id=w:vg393 size=1&gt;When an OCA is deployed, users will often look for ways to optimize their data exchange given limited or slow network connections. One good way to optimize data synchronization is by prioritizing data to define data that is high priority or critical. Using priority data exchange, critical changes could be synchronized immediately while leaving less important data to be synchronized at a later time. For example, imagine a user currently has access only to a slow connection. Given the limited bandwidth, this user wishes to send change from a single (highly important) table and leave changes from other tables for later in the day when she can connect through a faster network connection. With Sync Services for ADO.NET, synchronization can be executed from the remote application on a table-by-table basis and on an upload-only or download-only basis. This means that specific tables can be synchronized, leaving others to be synchronized at a later time while still enabling guaranteed data exchange for all data.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;H2 class=western id=w:vg394&gt;&lt;FONT id=w:vg395 face="宋体, SimSun"&gt;后台同步&lt;/FONT&gt;&lt;/H2&gt; &lt;H3 class=western id=w:vg396 style="BACKGROUND: #ffffff; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg397 size=2&gt;Background Synchronization&lt;/FONT&gt;&lt;/H3&gt; &lt;P class=western id=w:vg398 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg399 face="新宋体, monospace"&gt;当用户的程序执行一个命令的时候（如，数据同步），也不会影响用户的控制。对于&lt;/FONT&gt;OCA&lt;FONT id=w:vg400 face="新宋体, monospace"&gt;，当执行诸如数据同步的时候，用户将不能访问本地数据库。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg401 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg402 face="Verdana, sans-serif"&gt;&lt;FONT id=w:vg403 size=1&gt;&lt;FONT id=w:vg404 size=1&gt;Nothing will frustrate a user more than when they are locked out of their application while another process (such as data synchronization) takes control. With most OCAs, users are not able to access their local database while processes like data synchronization are being executed.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=w:vg405 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg406 face="新宋体, monospace"&gt;对于&lt;/FONT&gt;Sync Services for ADO.NET&lt;FONT id=w:vg407 face="新宋体, monospace"&gt;，同步是在后台线程运行的。只要本地数据库支持在独立连接上同步（像 &lt;/FONT&gt;SQL Server Compact does&lt;FONT id=w:vg408 face="新宋体, monospace"&gt;），同步就可以在后台执行。这允许本地用户继续使用和修改数据库直到同步完成。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg409 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg410 face="Verdana, sans-serif"&gt;&lt;FONT id=w:vg411 size=1&gt;&lt;FONT id=w:vg412 size=1&gt;With Sync Services for ADO.NET, synchronization can run as a background thread. As long as the local database supports the ability to synchronize on a separate connection (as SQL Server Compact does), synchronization can be executed in the background. This allows a local user to continue to use and change their database while synchronization is being completed.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;H2 class=western id=w:vg413&gt;&lt;FONT id=w:vg414 face="宋体, SimSun"&gt;多同步拓扑&lt;/FONT&gt;&lt;/H2&gt; &lt;H3 class=western id=w:vg415 style="BACKGROUND: #ffffff; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg416 size=2&gt;Multiple Synchronization Topologies&lt;/FONT&gt;&lt;/H3&gt; &lt;P class=western id=w:vg417 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg418 face="新宋体, monospace"&gt;当构建&lt;/FONT&gt;OCA&lt;FONT id=w:vg419 face="新宋体, monospace"&gt;时，组织通常会选择一个网络扩谱。例如，想想一下，一组运送工，在一天开始从中心库存数据库中下载路线信息，然后在一天结束的时候，上传包囊和路线完成信息到同一库存数据库。在传统的同步环境中，这可能会被设计成放射状模型（&lt;/FONT&gt;hub-and-spoke&lt;FONT id=w:vg420 face="新宋体, monospace"&gt;），如下。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg421 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg422 face="Verdana, sans-serif"&gt;&lt;FONT id=w:vg423 size=1&gt;&lt;FONT id=w:vg424 size=1&gt;When first architecting an OCA, organizations will typically start with a single network topology. For example, imagine a group of delivery workers who download their route information at the start of the day from a central warehouse database and then upload their package and route completion information to the same warehouse database at the end of the day. In a traditional synchronization environment this would be considered a hub-and-spoke model as seen below.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg425 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;IMG id=w:vg426 height=345 src="http://docs.google.com/File?id=dggdkn6_230hbqsp5cw_b" width=512 align=bottom border=0 name=bb887608&gt;&lt;/P&gt; &lt;P class=western id=w:vg427 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg428 face="新宋体, monospace"&gt;然而，如果当一个员工完成了他的工作，却从仓库开到城市的另一端，这时司机可能希望同步数据到另一个仓库。或者进一步，使用数据协作将数据同步给另一个运送工。第二个用户回到仓库将他们数据都上传到服务器。你可以想象，这种同步逻辑将会很快变得很复杂。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg429 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg430 face="Verdana, sans-serif"&gt;&lt;FONT id=w:vg431 size=1&gt;&lt;FONT id=w:vg432 size=1&gt;However, what happens if a delivery worker completes his work on the other side of the city from the warehouse and the driver wishes to synchronize with a different warehouse? Or to take it one step further, why not let the delivery worker synchronize data with another delivery worker by using data collaboration. The second user could then go to a warehouse and upload both users’ data. As you can imagine the logic required to orchestrate this type of synchronization can quickly become very complicated.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=w:vg433 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg434 face="新宋体, monospace"&gt;对于&lt;/FONT&gt;Sync Services for ADO.NET&lt;FONT id=w:vg435 face="新宋体, monospace"&gt;，实际上支持使用任何类型同步拓扑。现在，公司将不再局限单个拓扑或者组合拓扑，这意味着可以建立包含离线和协作基础结构&lt;/FONT&gt;.&lt;/P&gt; &lt;P id=w:vg436 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg437 face="Verdana, sans-serif"&gt;&lt;FONT id=w:vg438 size=1&gt;&lt;FONT id=w:vg439 size=1&gt;With Sync Services for ADO.NET, virtually any type of synchronization topology can be used. Now organizations are no longer limited to a single topology but can choose any one or a combination of topologies, meaning they could create combinations of offline and collaboration-based architectures.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg440 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt; &lt;IMG id=w:vg441 height=323 src="http://docs.google.com/File?id=dggdkn6_231gvmt5cxm_b" width=556 align=bottom border=0 name=bb887608&gt;&lt;/P&gt; &lt;H2 class=western id=w:vg442&gt;&lt;FONT id=w:vg443 face="宋体, SimSun"&gt;自定义客户端和服务器数据库&lt;/FONT&gt;&lt;/H2&gt; &lt;H3 class=western id=w:vg444 style="BACKGROUND: #ffffff; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg445 size=2&gt;Custom Client and Server Databases&lt;/FONT&gt;&lt;/H3&gt; &lt;P class=western id=w:vg446 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg447 face="新宋体, monospace"&gt;毫无疑问，将来的某一时刻，你需要添加新的数据库到你的同步环境中。例如，一个企业可能拥有一个遗留系统或者大型主机需要整合到现有的同步环境中。或者，一个移动设备可能已经有了自定义数据库，需要将它整合到后端数据库。使问题更糟的是，如果数据库不允许你跟踪更改，使是你无法应用更改。&lt;/FONT&gt;Sync Services for ADO.NET&lt;FONT id=w:vg448 face="新宋体, monospace"&gt;，提供了通用数据库，像是&lt;/FONT&gt;SQL Server Compact&lt;FONT id=w:vg449 face="新宋体, monospace"&gt;和 &lt;/FONT&gt;SQL Server 2008 &lt;FONT id=w:vg450 face="新宋体, monospace"&gt;是外部功能。然而，使用&lt;/FONT&gt;Microsoft Sync Framework&lt;FONT id=w:vg451 face="新宋体, monospace"&gt;，开发人员可以闯进自定义提供器（&lt;/FONT&gt;provider&lt;FONT id=w:vg452 face="新宋体, monospace"&gt;），来整合同步存在任何位置的数据库，想&lt;/FONT&gt;Web service&lt;FONT id=w:vg453 face="新宋体, monospace"&gt;、 &lt;/FONT&gt;U &lt;FONT id=w:vg454 face="新宋体, monospace"&gt;盘，有机上的&lt;/FONT&gt;SIM&lt;FONT id=w:vg455 face="新宋体, monospace"&gt;卡。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg456 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg457 face="Verdana, sans-serif"&gt;&lt;FONT id=w:vg458 size=1&gt;&lt;FONT id=w:vg459 size=1&gt;Without a doubt, there will come a time when you need to add a new database into your synchronization environment. For example, an enterprise may have legacy systems or mainframes that need to be integrated into the existing synchronization environment. Or alternatively, a mobile device may already have a custom database that needs to be integrated into the back-end database. To make matters worse, what if you are not able to make changes to that database to allow you to track changes? With Sync Services for ADO.NET, providers for common databases such as SQL Server Compact and SQL Server 2008 are included out of the box. However, using the Microsoft Sync Framework, a developer can create custom providers that integrate synchronization with virtually any place you store your data, whether that is a Web service, a USB key-chain drive, or a SIM card on a cell phone.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;H2 class=western id=w:vg460&gt;&lt;FONT id=w:vg461 face="宋体, SimSun"&gt;安全&lt;/FONT&gt;&lt;/H2&gt; &lt;H3 class=western id=w:vg462 style="BACKGROUND: #ffffff; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg463 size=2&gt;Security&lt;/FONT&gt;&lt;/H3&gt; &lt;P class=western id=w:vg464 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg465 face="新宋体, monospace"&gt;在一个&lt;/FONT&gt;OCA&lt;FONT id=w:vg466 face="新宋体, monospace"&gt;中，有多方面的安全需要实现。这些方面包括：&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg467 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg468 face="Verdana, sans-serif"&gt;&lt;FONT id=w:vg469 size=1&gt;&lt;FONT id=w:vg470 size=1&gt;In an OCA, there are many aspects to security that may need to be implemented. Some of these areas include:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;UL id=w:vg471&gt; &lt;LI id=w:vg472&gt; &lt;P id=w:vg473 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg474 face="新宋体, monospace"&gt;数据库加密 &lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg475&gt; &lt;P id=w:vg476 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg477 face="新宋体, monospace"&gt;数据库认证 &lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg478&gt; &lt;P id=w:vg479 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg480 face="新宋体, monospace"&gt;加密同步数据 &lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg481&gt; &lt;P id=w:vg482 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg483 face="新宋体, monospace"&gt;内部认证&lt;/FONT&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt; &lt;UL id=w:vg484&gt; &lt;LI id=w:vg485&gt; &lt;P class=western id=w:vg486 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg487 size=1&gt;&lt;FONT id=w:vg488 size=1&gt;Database encryption &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg489&gt; &lt;P class=western id=w:vg490 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg491 size=1&gt;&lt;FONT id=w:vg492 size=1&gt;Database authentication &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg493&gt; &lt;P class=western id=w:vg494 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg495 size=1&gt;&lt;FONT id=w:vg496 size=1&gt;Encryption of data synchronization &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;LI id=w:vg497&gt; &lt;P class=western id=w:vg498 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.05in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg499 size=1&gt;&lt;FONT id=w:vg500 size=1&gt;Internal authentication&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt; &lt;P class=western id=w:vg501 style="MARGIN-BOTTOM: 0.14in"&gt;Sync Services for ADO.NET &lt;FONT id=w:vg502 face="新宋体, monospace"&gt;能够帮助增加依赖同步的应用程序的安全性。在设备上， &lt;/FONT&gt;SQL Server Compact&lt;FONT id=w:vg503 face="新宋体, monospace"&gt;可以加密数据库，同时启动用户身份验证功能。从同步角度， &lt;/FONT&gt;Sync Services for ADO.NET &lt;FONT id=w:vg504 face="新宋体, monospace"&gt;支持能使加密数据在&lt;/FONT&gt;2&lt;FONT id=w:vg505 face="新宋体, monospace"&gt;个数据库间传播。在企业端， &lt;/FONT&gt;SQL Server 2008&lt;FONT id=w:vg506 face="新宋体, monospace"&gt;，以及现有的&lt;/FONT&gt;IIS&lt;FONT id=w:vg507 face="新宋体, monospace"&gt;安全可以提供用户认证，认证用户交换数据。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg508 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg509 face="Verdana, sans-serif"&gt;&lt;FONT id=w:vg510 size=1&gt;&lt;FONT id=w:vg511 size=1&gt;Sync Services for ADO.NET helps to increase the security of applications that depend on synchronization. On the device side, SQL Server Compact offers the ability to both encrypt the database as well as the ability to enable user authentication. From a synchronization perspective, Sync Services for ADO.NET supports the ability to encrypt data as it travels between databases. On the corporate side, SQL Server 2008 as well as existing IIS security can be leveraged for user authentication as users exchange data.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg512 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;BR id=w:vg513&gt;&lt;BR id=w:vg514&gt;&lt;/P&gt; &lt;H2 class=western id=w:vg515 style="BACKGROUND: #ffffff; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg516 face="宋体, SimSun"&gt;&lt;FONT id=w:vg517 size=2&gt;总结&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt; &lt;H2 class=western id=w:vg518 style="BACKGROUND: #ffffff; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg519 size=2&gt;&lt;FONT id=w:vg520 size=2&gt;Summary&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt; &lt;P class=western id=w:vg521 style="MARGIN-BOTTOM: 0.14in"&gt;Sync Services for ADO.NET&lt;FONT id=w:vg522 face="新宋体, monospace"&gt;是一个中和数据同步解决方案，能使开发者构建支持任何数据库，任何数据库，在任何网络上的同步解决方案。对于&lt;/FONT&gt;Sync Services for ADO.NET &lt;FONT id=w:vg523 face="新宋体, monospace"&gt;和&lt;/FONT&gt;Microsoft Sync Framework&lt;FONT id=w:vg524 face="新宋体, monospace"&gt;，信息同步的方向是可以进出组织的，允许开发者构建高效率和高伸缩性的偶尔连接程序。使用&lt;/FONT&gt;Microsoft Sync Framework&lt;FONT id=w:vg525 face="新宋体, monospace"&gt;开发者可以扩展&lt;/FONT&gt;Sync Services for ADO.NET &lt;FONT id=w:vg526 face="新宋体, monospace"&gt;应用程序具备在设备间使用任何数据源协作的能力。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=w:vg527 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg528 face="Verdana, sans-serif"&gt;&lt;FONT id=w:vg529 size=1&gt;&lt;FONT id=w:vg530 size=1&gt;Sync Services for ADO.NET is a comprehensive data synchronization solution that enables developers to build solutions that support synchronization of any database, on any data protocol over any network topology. With Sync Services for ADO.NET and the Microsoft Sync Framework, the synchronization of information can flow virtually anywhere in or out of the organization, allowing developers to build efficient and highly scalable Occasionally Connected Applications.  Using the Microsoft Sync Framework developers can extend Sync Services for ADO.NET applications to enable collaboration of data between devices using any data source.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=w:vg531 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;FONT id=w:vg532 face="新宋体, monospace"&gt;关于&lt;/FONT&gt;Sync Services for ADO.NET &lt;FONT id=w:vg533 face="新宋体, monospace"&gt;和&lt;/FONT&gt;Microsoft Sync Framework&lt;FONT id=w:vg534 face="新宋体, monospace"&gt;的更多信息，请访问： &lt;/FONT&gt;&lt;FONT id=w:vg535 color=#0033cc&gt;&lt;SPAN id=w:vg536 style="TEXT-DECORATION: none"&gt;&lt;A id=w:vg537 href="http://msdn2.microsoft.com/en-us/sync/default.aspx"&gt;&lt;FONT id=w:vg538 size=1&gt;&lt;FONT id=w:vg539 size=1&gt;http://msdn2.microsoft.com/en-us/sync/default.aspx&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt; .&lt;/P&gt; &lt;P id=w:vg540 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 140%"&gt;&lt;FONT id=w:vg541 face="宋体, SimSun"&gt;&lt;FONT id=w:vg542 size=3&gt;&lt;FONT id=w:vg543 size=1&gt;&lt;FONT id=w:vg544 face="Verdana, sans-serif"&gt;For more information about Sync Services for ADO.NET and the Microsoft Sync Framework, please visit: &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=w:vg545 color=#0033cc&gt;&lt;SPAN id=w:vg546 style="TEXT-DECORATION: none"&gt;&lt;A id=w:vg547 href="http://msdn2.microsoft.com/en-us/sync/default.aspx"&gt;&lt;FONT id=w:vg548 size=1&gt;&lt;FONT id=w:vg549 face="Verdana, sans-serif"&gt;http://msdn2.microsoft.com/en-us/sync/default.aspx&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT id=w:vg550 size=1&gt;&lt;FONT id=w:vg551 face="Verdana, sans-serif"&gt; .&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=w:vg552 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;A id=w:vg553 name=_PictureBullets&gt;&lt;/A&gt;&lt;IMG id=w:vg554 height=8 src="http://docs.google.com/File?id=dggdkn6_232ncwjm5cb_b" width=4 align=bottom border=0 name=bullet&gt;&lt;/P&gt;&lt;BR id=w:vg557&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1539264213384076775-6103275907643293653?l=blog.sonofvb.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SonOVB/~4/HpLH0TqkiLo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sonofvb.net/feeds/6103275907643293653/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1539264213384076775&amp;postID=6103275907643293653" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/6103275907643293653?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/6103275907643293653?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SonOVB/~3/HpLH0TqkiLo/sync-services-for-ado.html" title="" /><author><name>G yc{Son of VB.NET}</name><uri>http://www.blogger.com/profile/10642280584042013225</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14927754176143394902" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.sonofvb.net/2008/08/sync-services-for-ado.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AERns8cCp7ImA9WxVREE4.&quot;"><id>tag:blogger.com,1999:blog-1539264213384076775.post-1519671512430433684</id><published>2008-08-29T17:27:00.000+08:00</published><updated>2009-01-16T01:15:07.578+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-16T01:15:07.578+08:00</app:edited><title /><content type="html">&lt;H1 class=western id=x5eb&gt;&lt;FONT id=x5eb0 face="宋体, SimSun"&gt;让&lt;/FONT&gt;WCF&lt;FONT id=x5eb1 face="宋体, SimSun"&gt;使用自定义业务对象&lt;/FONT&gt;&lt;/H1&gt; &lt;P id=x5eb2 style="MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb3 face="Cambria, serif"&gt;&lt;FONT id=x5eb4 size=4&gt;&lt;B id=x5eb5&gt;Using Custom Business Objects with Windows Communication&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb6 style="MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb7&gt;&lt;/P&gt; &lt;P id=x5eb8 style="MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb9 face="宋体, SimSun"&gt;&lt;FONT id=x5eb10 size=2&gt;原文链接：&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb11 size=2&gt;&lt;FONT id=x5eb12 size=2&gt;http://msdn.microsoft.com/zh-cn/vbasic/bb960413.aspx&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb13 style="MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb14 face="宋体, SimSun"&gt;&lt;FONT id=x5eb15 size=2&gt;作者：&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb16 size=2&gt;&lt;FONT id=x5eb17 color=#0033cc&gt;&lt;SPAN id=x5eb18 style="TEXT-DECORATION: none"&gt;&lt;A id=x5eb19 href="http://www.msmvps.com/windsor"&gt;&lt;FONT id=x5eb20 size=1&gt;&lt;FONT id=x5eb21 face="Verdana, sans-serif"&gt;Rob Windsor&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT id=x5eb22 size=1&gt;&lt;FONT id=x5eb23 face="Verdana, sans-serif"&gt; Visual Basic MVP, ObjectSharp Consulting&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb24 style="MARGIN-BOTTOM: 0.14in"&gt;&lt;BR id=x5eb25&gt;&lt;BR id=x5eb26&gt;&lt;/P&gt; &lt;P class=western id=x5eb27 style="MARGIN-BOTTOM: 0.14in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb28&gt;&lt;BR id=x5eb29&gt;&lt;/P&gt; &lt;P id=x5eb30 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb31 size=2&gt;在我之前的文章《&lt;/FONT&gt;&lt;FONT id=x5eb32 face="宋体, SimSun"&gt;&lt;FONT id=x5eb33 size=2&gt;&lt;FONT id=x5eb34 color=#0033cc&gt;&lt;SPAN id=x5eb35 style="TEXT-DECORATION: none"&gt;&lt;SPAN id=x5eb36 style="TEXT-DECORATION: none"&gt;&lt;A id=x5eb37 href="http://msdn.microsoft.com/zh-cn/vbasic/bb736015.aspx"&gt;Windows Communication Foundation &lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb38 size=2&gt;&lt;FONT id=x5eb39 color=#0033cc&gt;&lt;SPAN id=x5eb40 style="TEXT-DECORATION: none"&gt;&lt;SPAN id=x5eb41 style="TEXT-DECORATION: none"&gt;&lt;A id=x5eb42 href="http://msdn.microsoft.com/zh-cn/vbasic/bb736015.aspx"&gt;入门&lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;》中，我描述如何创建简单的&lt;/FONT&gt;&lt;FONT id=x5eb43 face="宋体, SimSun"&gt;&lt;FONT id=x5eb44 size=2&gt;&lt;FONT id=x5eb45 size=2&gt;WCF&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb46 size=2&gt;服务。服务事例演示了入户是使用简单类型，像数字和字符串，但在真实的应用程序中大多使用更复杂的数据类型，像是&lt;/FONT&gt;&lt;FONT id=x5eb47 face="宋体, SimSun"&gt;&lt;FONT id=x5eb48 size=2&gt;&lt;FONT id=x5eb49 size=2&gt;Customers &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb50 size=2&gt;和 &lt;/FONT&gt;&lt;FONT id=x5eb51 face="宋体, SimSun"&gt;&lt;FONT id=x5eb52 size=2&gt;&lt;FONT id=x5eb53 size=2&gt;Invoices&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb54 size=2&gt;。在这篇文章中，我将介绍如何在&lt;/FONT&gt;&lt;FONT id=x5eb55 face="宋体, SimSun"&gt;&lt;FONT id=x5eb56 size=2&gt;&lt;FONT id=x5eb57 size=2&gt;WCF&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb58 size=2&gt;中使用这些自定义的业务对象（类型）。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb59 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb60 face="宋体, SimSun"&gt;&lt;FONT id=x5eb61 size=2&gt;&lt;FONT id=x5eb62 face="Verdana, sans-serif"&gt;In my previous article, &lt;/FONT&gt;&lt;A id=x5eb63 href="http://msdn.microsoft.com/vbasic/bb736015.aspx"&gt;Getting Started with Windows Communication Foundation&lt;/A&gt;&lt;FONT id=x5eb64 face="Verdana, sans-serif"&gt;, I described the basics of creating and consuming a simple WCF service. The services demonstrated used simple types like numbers and strings, but most real-world applications use more complex data like customers and invoices. In this article I’ll demonstrate how to work with these custom business objects in WCF. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb65 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb66 size=2&gt;事例代码&lt;FONT id=x5eb67 color=#0033cc&gt;&lt;SPAN id=x5eb68 style="TEXT-DECORATION: none"&gt;&lt;A id=x5eb69 href="http://blogs.msdn.com/bethmassi/attachment/5693896.ashx"&gt;在这里下载&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt;。要运行事例代码，你需安装要&lt;/FONT&gt;&lt;FONT id=x5eb70 face="宋体, SimSun"&gt;&lt;FONT id=x5eb71 size=2&gt;&lt;FONT id=x5eb72 color=#0033cc&gt;&lt;SPAN id=x5eb73 style="TEXT-DECORATION: none"&gt;&lt;A id=x5eb74 href="http://msdn.microsoft.com/vstudio/aa973782.aspx"&gt;&lt;FONT id=x5eb75 face="Verdana, sans-serif"&gt;Visual Studio 2005&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb76 size=2&gt;，&lt;/FONT&gt;&lt;FONT id=x5eb77 face="宋体, SimSun"&gt;&lt;FONT id=x5eb78 size=2&gt;&lt;FONT id=x5eb79 color=#0033cc&gt;&lt;SPAN id=x5eb80 style="TEXT-DECORATION: none"&gt;&lt;A id=x5eb81 href="http://www.microsoft.com/downloads/details.aspx?familyid=10cc340b-f857-4a14-83f5-25634c3bf043"&gt;&lt;FONT id=x5eb82 face="Verdana, sans-serif"&gt;.NET Framework 3.0&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT id=x5eb83 face="Verdana, sans-serif"&gt;, &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb84 size=2&gt;和 &lt;/FONT&gt;&lt;FONT id=x5eb85 face="宋体, SimSun"&gt;&lt;FONT id=x5eb86 size=2&gt;&lt;FONT id=x5eb87 color=#0033cc&gt;&lt;SPAN id=x5eb88 style="TEXT-DECORATION: none"&gt;&lt;A id=x5eb89 href="http://www.microsoft.com/downloads/details.aspx?familyid=f54f5537-cc86-4bf5-ae44-f5a1e805680d"&gt;&lt;FONT id=x5eb90 face="Verdana, sans-serif"&gt;Visual Studio 2005 extensions for .NET Framework 3.0 (WCF and WPF)&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb91 size=2&gt;。&lt;SPAN id=x5eb92 style="BACKGROUND: #ffffff"&gt;&lt;FONT id=x5eb93 face=华文楷体&gt;&lt;FONT id=x5eb94 size=2&gt;（或者安装&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT id=x5eb95 face="宋体, SimSun"&gt;&lt;FONT id=x5eb96 size=2&gt;&lt;FONT id=x5eb97 face=华文楷体&gt;&lt;FONT id=x5eb98 size=2&gt;&lt;SPAN id=x5eb99 style="BACKGROUND: #ffffff"&gt;VS2008&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb100 size=2&gt;&lt;SPAN id=x5eb101 style="BACKGROUND: #ffffff"&gt;&lt;FONT id=x5eb102 face=华文楷体&gt;&lt;FONT id=x5eb103 size=2&gt;）&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb104 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb105 face="宋体, SimSun"&gt;&lt;FONT id=x5eb106 size=2&gt;&lt;FONT id=x5eb107 face="Verdana, sans-serif"&gt;Download the &lt;/FONT&gt;&lt;FONT id=x5eb108 color=#0033cc&gt;&lt;SPAN id=x5eb109 style="TEXT-DECORATION: none"&gt;&lt;A id=x5eb110 href="http://blogs.msdn.com/bethmassi/attachment/5693896.ashx"&gt;&lt;FONT id=x5eb111 face="Verdana, sans-serif"&gt;sample code here&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT id=x5eb112 face="Verdana, sans-serif"&gt;. To run the sample code, you'll need &lt;/FONT&gt;&lt;FONT id=x5eb113 color=#0033cc&gt;&lt;SPAN id=x5eb114 style="TEXT-DECORATION: none"&gt;&lt;A id=x5eb115 href="http://msdn.microsoft.com/vstudio/aa973782.aspx"&gt;&lt;FONT id=x5eb116 face="Verdana, sans-serif"&gt;Visual Studio 2005&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT id=x5eb117 face="Verdana, sans-serif"&gt;, the &lt;/FONT&gt;&lt;FONT id=x5eb118 color=#0033cc&gt;&lt;SPAN id=x5eb119 style="TEXT-DECORATION: none"&gt;&lt;A id=x5eb120 href="http://www.microsoft.com/downloads/details.aspx?familyid=10cc340b-f857-4a14-83f5-25634c3bf043"&gt;&lt;FONT id=x5eb121 face="Verdana, sans-serif"&gt;.NET Framework 3.0&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT id=x5eb122 face="Verdana, sans-serif"&gt;, and the &lt;/FONT&gt;&lt;FONT id=x5eb123 color=#0033cc&gt;&lt;SPAN id=x5eb124 style="TEXT-DECORATION: none"&gt;&lt;A id=x5eb125 href="http://www.microsoft.com/downloads/details.aspx?familyid=f54f5537-cc86-4bf5-ae44-f5a1e805680d"&gt;&lt;FONT id=x5eb126 face="Verdana, sans-serif"&gt;Visual Studio 2005 extensions for .NET Framework 3.0 (WCF and WPF)&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT id=x5eb127 face="Verdana, sans-serif"&gt; installed.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;H2 class=western id=x5eb128 style="BACKGROUND: #ffffff; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb129 face="宋体, SimSun"&gt;&lt;FONT id=x5eb130 size=2&gt;开始&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt; &lt;H2 class=western id=x5eb131 style="BACKGROUND: #ffffff; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb132 size=2&gt;&lt;FONT id=x5eb133 size=2&gt;Setting Up&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt; &lt;P id=x5eb134 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb135 size=2&gt;我的演示的解决方案里包含&lt;/FONT&gt;&lt;FONT id=x5eb136 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb137 size=2&gt;&lt;FONT id=x5eb138 size=2&gt;4&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb139 size=2&gt;个项目。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb140 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb141 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb142 size=2&gt;&lt;FONT id=x5eb143 size=2&gt;I’ll start with a solution that contains four projects. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb144 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;IMG id=x5eb145 height=298 src="http://docs.google.com/File?id=dggdkn6_235f8nf75ff_b" width=204 align=bottom border=0 name=bb960413&gt;&lt;/P&gt; &lt;P id=x5eb146 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb147 face="宋体, SimSun"&gt;&lt;FONT id=x5eb148 size=2&gt;&lt;B id=x5eb149&gt;&lt;FONT id=x5eb150 face="Verdana, sans-serif"&gt;Business &lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb151 size=2&gt;是一个类库项目，包含自定义名称为&lt;/FONT&gt;&lt;FONT id=x5eb152 face="宋体, SimSun"&gt;&lt;FONT id=x5eb153 size=2&gt;&lt;FONT id=x5eb154 face="Verdana, sans-serif"&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb155 size=2&gt;的业务类。&lt;/FONT&gt;&lt;FONT id=x5eb156 face="宋体, SimSun"&gt;&lt;FONT id=x5eb157 size=2&gt;&lt;FONT id=x5eb158 face="Verdana, sans-serif"&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb159 size=2&gt;有几个属性（&lt;/FONT&gt;&lt;FONT id=x5eb160 face="宋体, SimSun"&gt;&lt;FONT id=x5eb161 size=2&gt;&lt;FONT id=x5eb162 face="Lucida Console, monospace"&gt;Id&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb163 size=2&gt;，&lt;/FONT&gt;&lt;FONT id=x5eb164 face="宋体, SimSun"&gt;&lt;FONT id=x5eb165 size=2&gt;&lt;FONT id=x5eb166 face="Lucida Console, monospace"&gt;Name&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb167 size=2&gt;，和&lt;/FONT&gt;&lt;FONT id=x5eb168 face="宋体, SimSun"&gt;&lt;FONT id=x5eb169 size=2&gt;&lt;FONT id=x5eb170 face="Lucida Console, monospace"&gt;BirthDate&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb171 size=2&gt;）和一个&lt;/FONT&gt;&lt;FONT id=x5eb172 face="宋体, SimSun"&gt;&lt;FONT id=x5eb173 size=2&gt;&lt;FONT id=x5eb174 face="Lucida Console, monospace"&gt;ToString&lt;/FONT&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb175 size=2&gt;方法。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb176 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb177 face="宋体, SimSun"&gt;&lt;FONT id=x5eb178 size=2&gt;&lt;B id=x5eb179&gt;&lt;FONT id=x5eb180 face="Verdana, sans-serif"&gt;Business &lt;/FONT&gt;&lt;/B&gt;&lt;FONT id=x5eb181 face="Verdana, sans-serif"&gt;is a class library project with a custom business class named &lt;/FONT&gt;&lt;FONT id=x5eb182 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb183 face="Verdana, sans-serif"&gt;. &lt;/FONT&gt;&lt;FONT id=x5eb184 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb185 face="Verdana, sans-serif"&gt; has a few simple properties (&lt;/FONT&gt;&lt;FONT id=x5eb186 face="Lucida Console, monospace"&gt;Id&lt;/FONT&gt;&lt;FONT id=x5eb187 face="Verdana, sans-serif"&gt;, &lt;/FONT&gt;&lt;FONT id=x5eb188 face="Lucida Console, monospace"&gt;Name&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb189 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb190 face="宋体, SimSun"&gt;&lt;FONT id=x5eb191 size=2&gt;&lt;FONT id=x5eb192 face="Verdana, sans-serif"&gt;, and &lt;/FONT&gt;&lt;FONT id=x5eb193 face="Lucida Console, monospace"&gt;BirthDate&lt;/FONT&gt;&lt;FONT id=x5eb194 face="Verdana, sans-serif"&gt;) and a &lt;/FONT&gt;&lt;FONT id=x5eb195 face="Lucida Console, monospace"&gt;ToString&lt;/FONT&gt;&lt;FONT id=x5eb196 face="Verdana, sans-serif"&gt; method.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb197 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb198 size=2&gt;&lt;FONT id=x5eb199 face="新宋体, monospace"&gt;&lt;FONT id=x5eb200 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb201 color=#0000ff&gt;Class&lt;/FONT&gt; Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb202 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb203&gt;&lt;/P&gt; &lt;P class=western id=x5eb204 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb205 size=2&gt;&lt;FONT id=x5eb206 face="新宋体, monospace"&gt;&lt;FONT id=x5eb207 color=#0000ff&gt;Private&lt;/FONT&gt; _id &lt;FONT id=x5eb208 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb209 color=#0000ff&gt;Integer&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb210 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb211 size=2&gt;&lt;FONT id=x5eb212 face="新宋体, monospace"&gt;&lt;FONT id=x5eb213 color=#0000ff&gt;Private&lt;/FONT&gt; _name &lt;FONT id=x5eb214 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb215 color=#0000ff&gt;String&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb216 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb217 size=2&gt;&lt;FONT id=x5eb218 face="新宋体, monospace"&gt;&lt;FONT id=x5eb219 color=#0000ff&gt;Private&lt;/FONT&gt; _birthDate &lt;FONT id=x5eb220 color=#0000ff&gt;As&lt;/FONT&gt; DateTime&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb221 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb222&gt;&lt;/P&gt; &lt;P class=western id=x5eb223 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb224 size=2&gt;&lt;FONT id=x5eb225 face="新宋体, monospace"&gt;&lt;FONT id=x5eb226 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb227 color=#0000ff&gt;Sub&lt;/FONT&gt; &lt;FONT id=x5eb228 color=#0000ff&gt;New&lt;/FONT&gt;(&lt;FONT id=x5eb229 color=#0000ff&gt;ByVal&lt;/FONT&gt; id &lt;FONT id=x5eb230 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb231 color=#0000ff&gt;Integer&lt;/FONT&gt;, _&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb232 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb233 size=2&gt;&lt;FONT id=x5eb234 face="新宋体, monospace"&gt;&lt;FONT id=x5eb235 color=#0000ff&gt;ByVal&lt;/FONT&gt; name &lt;FONT id=x5eb236 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb237 color=#0000ff&gt;String&lt;/FONT&gt;, &lt;FONT id=x5eb238 color=#0000ff&gt;ByVal&lt;/FONT&gt; birthDate &lt;FONT id=x5eb239 color=#0000ff&gt;As&lt;/FONT&gt; DateTime)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb240 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb241 face="新宋体, monospace"&gt;&lt;FONT id=x5eb242 size=2&gt;&lt;FONT id=x5eb243 size=2&gt;_id = id&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb244 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb245 face="新宋体, monospace"&gt;&lt;FONT id=x5eb246 size=2&gt;&lt;FONT id=x5eb247 size=2&gt;_name = name&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb248 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb249 face="新宋体, monospace"&gt;&lt;FONT id=x5eb250 size=2&gt;&lt;FONT id=x5eb251 size=2&gt;_birthDate = birthDate&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb252 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb253 size=2&gt;&lt;FONT id=x5eb254 face="新宋体, monospace"&gt;&lt;FONT id=x5eb255 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb256 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb257 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb258&gt;&lt;/P&gt; &lt;P class=western id=x5eb259 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb260 size=2&gt;&lt;FONT id=x5eb261 face="新宋体, monospace"&gt;&lt;FONT id=x5eb262 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb263 color=#0000ff&gt;Property&lt;/FONT&gt; Id() &lt;FONT id=x5eb264 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb265 color=#0000ff&gt;Integer&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb266 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb267 size=2&gt;&lt;FONT id=x5eb268 face="新宋体, monospace"&gt;&lt;FONT id=x5eb269 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb270 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb271 size=2&gt;&lt;FONT id=x5eb272 face="新宋体, monospace"&gt;&lt;FONT id=x5eb273 color=#0000ff&gt;Return&lt;/FONT&gt; _id&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb274 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb275 size=2&gt;&lt;FONT id=x5eb276 face="新宋体, monospace"&gt;&lt;FONT id=x5eb277 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb278 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb279 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb280 size=2&gt;&lt;FONT id=x5eb281 face="新宋体, monospace"&gt;&lt;FONT id=x5eb282 color=#0000ff&gt;Set&lt;/FONT&gt;(&lt;FONT id=x5eb283 color=#0000ff&gt;ByVal&lt;/FONT&gt; value &lt;FONT id=x5eb284 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb285 color=#0000ff&gt;Integer&lt;/FONT&gt;)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb286 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb287 face="新宋体, monospace"&gt;&lt;FONT id=x5eb288 size=2&gt;&lt;FONT id=x5eb289 size=2&gt;_id = value&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb290 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb291 size=2&gt;&lt;FONT id=x5eb292 face="新宋体, monospace"&gt;&lt;FONT id=x5eb293 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb294 color=#0000ff&gt;Set&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb295 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb296 size=2&gt;&lt;FONT id=x5eb297 face="新宋体, monospace"&gt;&lt;FONT id=x5eb298 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb299 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb300 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb301&gt;&lt;/P&gt; &lt;P class=western id=x5eb302 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb303 size=2&gt;&lt;FONT id=x5eb304 face="新宋体, monospace"&gt;&lt;FONT id=x5eb305 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb306 color=#0000ff&gt;Property&lt;/FONT&gt; Name() &lt;FONT id=x5eb307 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb308 color=#0000ff&gt;String&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb309 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb310 size=2&gt;&lt;FONT id=x5eb311 face="新宋体, monospace"&gt;&lt;FONT id=x5eb312 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb313 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb314 size=2&gt;&lt;FONT id=x5eb315 face="新宋体, monospace"&gt;&lt;FONT id=x5eb316 color=#0000ff&gt;Return&lt;/FONT&gt; _name&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb317 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb318 size=2&gt;&lt;FONT id=x5eb319 face="新宋体, monospace"&gt;&lt;FONT id=x5eb320 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb321 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb322 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb323 size=2&gt;&lt;FONT id=x5eb324 face="新宋体, monospace"&gt;&lt;FONT id=x5eb325 color=#0000ff&gt;Set&lt;/FONT&gt;(&lt;FONT id=x5eb326 color=#0000ff&gt;ByVal&lt;/FONT&gt; value &lt;FONT id=x5eb327 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb328 color=#0000ff&gt;String&lt;/FONT&gt;)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb329 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb330 face="新宋体, monospace"&gt;&lt;FONT id=x5eb331 size=2&gt;&lt;FONT id=x5eb332 size=2&gt;_name = value&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb333 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb334 size=2&gt;&lt;FONT id=x5eb335 face="新宋体, monospace"&gt;&lt;FONT id=x5eb336 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb337 color=#0000ff&gt;Set&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb338 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb339 size=2&gt;&lt;FONT id=x5eb340 face="新宋体, monospace"&gt;&lt;FONT id=x5eb341 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb342 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb343 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb344&gt;&lt;/P&gt; &lt;P class=western id=x5eb345 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb346 size=2&gt;&lt;FONT id=x5eb347 face="新宋体, monospace"&gt;&lt;FONT id=x5eb348 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb349 color=#0000ff&gt;Property&lt;/FONT&gt; BirthDate() &lt;FONT id=x5eb350 color=#0000ff&gt;As&lt;/FONT&gt; DateTime&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb351 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb352 size=2&gt;&lt;FONT id=x5eb353 face="新宋体, monospace"&gt;&lt;FONT id=x5eb354 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb355 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb356 size=2&gt;&lt;FONT id=x5eb357 face="新宋体, monospace"&gt;&lt;FONT id=x5eb358 color=#0000ff&gt;Return&lt;/FONT&gt; _birthDate&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb359 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb360 size=2&gt;&lt;FONT id=x5eb361 face="新宋体, monospace"&gt;&lt;FONT id=x5eb362 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb363 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb364 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb365 size=2&gt;&lt;FONT id=x5eb366 face="新宋体, monospace"&gt;&lt;FONT id=x5eb367 color=#0000ff&gt;Set&lt;/FONT&gt;(&lt;FONT id=x5eb368 color=#0000ff&gt;ByVal&lt;/FONT&gt; value &lt;FONT id=x5eb369 color=#0000ff&gt;As&lt;/FONT&gt; DateTime)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb370 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb371 face="新宋体, monospace"&gt;&lt;FONT id=x5eb372 size=2&gt;&lt;FONT id=x5eb373 size=2&gt;_birthDate = value&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb374 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb375 size=2&gt;&lt;FONT id=x5eb376 face="新宋体, monospace"&gt;&lt;FONT id=x5eb377 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb378 color=#0000ff&gt;Set&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb379 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb380 size=2&gt;&lt;FONT id=x5eb381 face="新宋体, monospace"&gt;&lt;FONT id=x5eb382 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb383 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb384 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb385&gt;&lt;/P&gt; &lt;P class=western id=x5eb386 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb387 size=2&gt;&lt;FONT id=x5eb388 face="新宋体, monospace"&gt;&lt;FONT id=x5eb389 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb390 color=#0000ff&gt;Overrides&lt;/FONT&gt; &lt;FONT id=x5eb391 color=#0000ff&gt;Function&lt;/FONT&gt; ToString() &lt;FONT id=x5eb392 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb393 color=#0000ff&gt;String&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb394 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb395 size=2&gt;&lt;FONT id=x5eb396 face="新宋体, monospace"&gt;&lt;FONT id=x5eb397 color=#0000ff&gt;Return&lt;/FONT&gt; &lt;FONT id=x5eb398 color=#0000ff&gt;String&lt;/FONT&gt;.Format( _&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb399 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb400 size=2&gt;&lt;FONT id=x5eb401 face="新宋体, monospace"&gt;&lt;FONT id=x5eb402 color=#a31515&gt;"{0} [Id:{1}; Birth Date: {2}]"&lt;/FONT&gt;, _&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb403 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb404 face="新宋体, monospace"&gt;&lt;FONT id=x5eb405 size=2&gt;&lt;FONT id=x5eb406 size=2&gt;_name, _id, _birthDate)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb407 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb408 size=2&gt;&lt;FONT id=x5eb409 face="新宋体, monospace"&gt;&lt;FONT id=x5eb410 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb411 color=#0000ff&gt;Function&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb412 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb413&gt;&lt;/P&gt; &lt;P class=western id=x5eb414 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb415 size=2&gt;&lt;FONT id=x5eb416 face="新宋体, monospace"&gt;&lt;FONT id=x5eb417 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb418 color=#0000ff&gt;Class&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb419 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb420 face="宋体, SimSun"&gt;&lt;FONT id=x5eb421 size=2&gt;&lt;B id=x5eb422&gt;&lt;FONT id=x5eb423 face="Verdana, sans-serif"&gt;Services&lt;/FONT&gt;&lt;/B&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb424 size=2&gt;是一个类库项目，包含一个名为&lt;/FONT&gt;&lt;FONT id=x5eb425 face="宋体, SimSun"&gt;&lt;FONT id=x5eb426 size=2&gt;&lt;FONT id=x5eb427 face="Verdana, sans-serif"&gt;PersonService&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb428 size=2&gt;的服务类。它暴露有&lt;/FONT&gt;&lt;FONT id=x5eb429 face="宋体, SimSun"&gt;&lt;FONT id=x5eb430 size=2&gt;&lt;FONT id=x5eb431 face="Verdana, sans-serif"&gt;3&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb432 size=2&gt;个操作：获取单个&lt;/FONT&gt;&lt;FONT id=x5eb433 face="宋体, SimSun"&gt;&lt;FONT id=x5eb434 size=2&gt;&lt;FONT id=x5eb435 size=2&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb436 size=2&gt;对象，获取一组&lt;/FONT&gt;&lt;FONT id=x5eb437 face="宋体, SimSun"&gt;&lt;FONT id=x5eb438 size=2&gt;&lt;FONT id=x5eb439 size=2&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb440 size=2&gt;对象，和更新一个&lt;/FONT&gt;&lt;FONT id=x5eb441 face="宋体, SimSun"&gt;&lt;FONT id=x5eb442 size=2&gt;&lt;FONT id=x5eb443 size=2&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb444 size=2&gt;对象。因为服务使用内存存储数据（像字典），所以实例模式将设置成&lt;/FONT&gt;&lt;FONT id=x5eb445 face="宋体, SimSun"&gt;&lt;FONT id=x5eb446 size=2&gt;&lt;FONT id=x5eb447 size=2&gt;Single&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb448 size=2&gt;。这意味着一个服务对象将处理所有的过来的请求，并且这些请求将访问和修改字典中的数据。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb449 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb450 face="宋体, SimSun"&gt;&lt;FONT id=x5eb451 size=2&gt;&lt;B id=x5eb452&gt;&lt;FONT id=x5eb453 face="Verdana, sans-serif"&gt;Services&lt;/FONT&gt;&lt;/B&gt;&lt;FONT id=x5eb454 face="Verdana, sans-serif"&gt; is a class library project with a service class named &lt;/FONT&gt;&lt;FONT id=x5eb455 face="Lucida Console, monospace"&gt;PersonService&lt;/FONT&gt;&lt;FONT id=x5eb456 face="Verdana, sans-serif"&gt;. It exposes three operations: one to get a single &lt;/FONT&gt;&lt;FONT id=x5eb457 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb458 face="Verdana, sans-serif"&gt; object, one to get a group of &lt;/FONT&gt;&lt;FONT id=x5eb459 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb460 face="Verdana, sans-serif"&gt; objects, and one to update a &lt;/FONT&gt;&lt;FONT id=x5eb461 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb462 face="Verdana, sans-serif"&gt; object. Because the service uses an in-memory data store (i.e., the Dictionary), the instancing mode has been set to &lt;/FONT&gt;&lt;FONT id=x5eb463 face="Lucida Console, monospace"&gt;Single&lt;/FONT&gt;&lt;FONT id=x5eb464 face="Verdana, sans-serif"&gt;. This means that a single service object will handle all incoming requests, and those requests will access or modify the data inside the Dictionary.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb465 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb466 face="新宋体, monospace"&gt;&lt;FONT id=x5eb467 size=2&gt;&lt;FONT id=x5eb468 color=#0000ff&gt;Imports&lt;/FONT&gt;&lt;FONT id=x5eb469 size=2&gt; System.ServiceModel&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb470 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb471 face="新宋体, monospace"&gt;&lt;FONT id=x5eb472 size=2&gt;&lt;FONT id=x5eb473 color=#0000ff&gt;Imports&lt;/FONT&gt;&lt;FONT id=x5eb474 size=2&gt; Business&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb475 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb476&gt;&lt;/P&gt; &lt;P id=x5eb477 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb478 face="新宋体, monospace"&gt;&lt;FONT id=x5eb479 size=2&gt;&lt;FONT id=x5eb480 size=2&gt;&amp;lt;ServiceContract()&amp;gt; _&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb481 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb482 face="新宋体, monospace"&gt;&lt;FONT id=x5eb483 size=2&gt;&lt;FONT id=x5eb484 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb485 color=#0000ff&gt;Interface&lt;/FONT&gt;&lt;FONT id=x5eb486 size=2&gt; IPersonService&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb487 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb488 face="新宋体, monospace"&gt;&lt;FONT id=x5eb489 size=2&gt;&lt;FONT id=x5eb490 size=2&gt;&amp;lt;OperationContract()&amp;gt; &lt;/FONT&gt;&lt;FONT id=x5eb491 color=#0000ff&gt;Function&lt;/FONT&gt;&lt;FONT id=x5eb492 size=2&gt; GetPerson(&lt;/FONT&gt;&lt;FONT id=x5eb493 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb494 size=2&gt; id &lt;/FONT&gt;&lt;FONT id=x5eb495 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb496 color=#0000ff&gt;Integer&lt;/FONT&gt;&lt;FONT id=x5eb497 size=2&gt;) &lt;/FONT&gt;&lt;FONT id=x5eb498 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb499 size=2&gt; Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb500 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb501 face="新宋体, monospace"&gt;&lt;FONT id=x5eb502 size=2&gt;&lt;FONT id=x5eb503 size=2&gt;&amp;lt;OperationContract()&amp;gt; &lt;/FONT&gt;&lt;FONT id=x5eb504 color=#0000ff&gt;Function&lt;/FONT&gt;&lt;FONT id=x5eb505 size=2&gt; GetPeople() &lt;/FONT&gt;&lt;FONT id=x5eb506 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb507 size=2&gt; Person()&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb508 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb509 face="新宋体, monospace"&gt;&lt;FONT id=x5eb510 size=2&gt;&lt;FONT id=x5eb511 size=2&gt;&amp;lt;OperationContract()&amp;gt; &lt;/FONT&gt;&lt;FONT id=x5eb512 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;FONT id=x5eb513 size=2&gt; UpdatePerson(&lt;/FONT&gt;&lt;FONT id=x5eb514 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb515 size=2&gt; p &lt;/FONT&gt;&lt;FONT id=x5eb516 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb517 size=2&gt; Person)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb518 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb519 face="新宋体, monospace"&gt;&lt;FONT id=x5eb520 size=2&gt;&lt;FONT id=x5eb521 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb522 color=#0000ff&gt;Interface&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb523 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb524&gt;&lt;/P&gt; &lt;P id=x5eb525 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb526 face="新宋体, monospace"&gt;&lt;FONT id=x5eb527 size=2&gt;&lt;FONT id=x5eb528 size=2&gt;&amp;lt;ServiceBehavior(InstanceContextMode:=InstanceContextMode.Single)&amp;gt; _&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb529 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb530 face="新宋体, monospace"&gt;&lt;FONT id=x5eb531 size=2&gt;&lt;FONT id=x5eb532 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb533 color=#0000ff&gt;Class&lt;/FONT&gt;&lt;FONT id=x5eb534 size=2&gt; PersonService&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb535 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb536 face="新宋体, monospace"&gt;&lt;FONT id=x5eb537 size=2&gt;&lt;FONT id=x5eb538 color=#0000ff&gt;Implements&lt;/FONT&gt;&lt;FONT id=x5eb539 size=2&gt; IPersonService&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb540 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb541&gt;&lt;/P&gt; &lt;P id=x5eb542 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb543 face="新宋体, monospace"&gt;&lt;FONT id=x5eb544 size=2&gt;&lt;FONT id=x5eb545 color=#0000ff&gt;Private&lt;/FONT&gt;&lt;FONT id=x5eb546 size=2&gt; _people &lt;/FONT&gt;&lt;FONT id=x5eb547 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb548 color=#0000ff&gt;New&lt;/FONT&gt;&lt;FONT id=x5eb549 size=2&gt; Dictionary(&lt;/FONT&gt;&lt;FONT id=x5eb550 color=#0000ff&gt;Of&lt;/FONT&gt; &lt;FONT id=x5eb551 color=#0000ff&gt;Integer&lt;/FONT&gt;&lt;FONT id=x5eb552 size=2&gt;, Person)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb553 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb554&gt;&lt;/P&gt; &lt;P id=x5eb555 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb556 face="新宋体, monospace"&gt;&lt;FONT id=x5eb557 size=2&gt;&lt;FONT id=x5eb558 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb559 color=#0000ff&gt;Sub&lt;/FONT&gt; &lt;FONT id=x5eb560 color=#0000ff&gt;New&lt;/FONT&gt;&lt;FONT id=x5eb561 size=2&gt;()&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb562 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb563 face="新宋体, monospace"&gt;&lt;FONT id=x5eb564 size=2&gt;&lt;FONT id=x5eb565 size=2&gt;_people.Add(1, &lt;/FONT&gt;&lt;FONT id=x5eb566 color=#0000ff&gt;New&lt;/FONT&gt;&lt;FONT id=x5eb567 size=2&gt; Person(1, &lt;/FONT&gt;&lt;FONT id=x5eb568 color=#a31515&gt;"Frodo Baggins"&lt;/FONT&gt;&lt;FONT id=x5eb569 size=2&gt;, #1/1/1380#))&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb570 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb571 face="新宋体, monospace"&gt;&lt;FONT id=x5eb572 size=2&gt;&lt;FONT id=x5eb573 size=2&gt;_people.Add(2, &lt;/FONT&gt;&lt;FONT id=x5eb574 color=#0000ff&gt;New&lt;/FONT&gt;&lt;FONT id=x5eb575 size=2&gt; Person(2, &lt;/FONT&gt;&lt;FONT id=x5eb576 color=#a31515&gt;"Sam Gamgee"&lt;/FONT&gt;&lt;FONT id=x5eb577 size=2&gt;, #2/2/1385#))&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb578 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb579 face="新宋体, monospace"&gt;&lt;FONT id=x5eb580 size=2&gt;&lt;FONT id=x5eb581 size=2&gt;_people.Add(3, &lt;/FONT&gt;&lt;FONT id=x5eb582 color=#0000ff&gt;New&lt;/FONT&gt;&lt;FONT id=x5eb583 size=2&gt; Person(3, &lt;/FONT&gt;&lt;FONT id=x5eb584 color=#a31515&gt;"Merry Brandybuck"&lt;/FONT&gt;&lt;FONT id=x5eb585 size=2&gt;, #3/3/1390#))&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb586 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb587 face="新宋体, monospace"&gt;&lt;FONT id=x5eb588 size=2&gt;&lt;FONT id=x5eb589 size=2&gt;_people.Add(4, &lt;/FONT&gt;&lt;FONT id=x5eb590 color=#0000ff&gt;New&lt;/FONT&gt;&lt;FONT id=x5eb591 size=2&gt; Person(4, &lt;/FONT&gt;&lt;FONT id=x5eb592 color=#a31515&gt;"Pippin Took"&lt;/FONT&gt;&lt;FONT id=x5eb593 size=2&gt;, #4/4/1395#))&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb594 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb595 face="新宋体, monospace"&gt;&lt;FONT id=x5eb596 size=2&gt;&lt;FONT id=x5eb597 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb598 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb599 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb600&gt;&lt;/P&gt; &lt;P id=x5eb601 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb602 face="新宋体, monospace"&gt;&lt;FONT id=x5eb603 size=2&gt;&lt;FONT id=x5eb604 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb605 color=#0000ff&gt;Function&lt;/FONT&gt;&lt;FONT id=x5eb606 size=2&gt; GetPerson(&lt;/FONT&gt;&lt;FONT id=x5eb607 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb608 size=2&gt; id &lt;/FONT&gt;&lt;FONT id=x5eb609 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb610 color=#0000ff&gt;Integer&lt;/FONT&gt;&lt;FONT id=x5eb611 size=2&gt;) &lt;/FONT&gt;&lt;FONT id=x5eb612 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb613 size=2&gt; Person &lt;/FONT&gt;&lt;FONT id=x5eb614 color=#0000ff&gt;Implements&lt;/FONT&gt;&lt;FONT id=x5eb615 size=2&gt; IPersonService.GetPerson&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb616 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb617 face="新宋体, monospace"&gt;&lt;FONT id=x5eb618 size=2&gt;&lt;FONT id=x5eb619 color=#0000ff&gt;Dim&lt;/FONT&gt;&lt;FONT id=x5eb620 size=2&gt; result &lt;/FONT&gt;&lt;FONT id=x5eb621 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb622 size=2&gt; Person = &lt;/FONT&gt;&lt;FONT id=x5eb623 color=#0000ff&gt;Nothing&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb624 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb625 face="新宋体, monospace"&gt;&lt;FONT id=x5eb626 size=2&gt;&lt;FONT id=x5eb627 color=#0000ff&gt;If&lt;/FONT&gt;&lt;FONT id=x5eb628 size=2&gt; _people.ContainsKey(id) &lt;/FONT&gt;&lt;FONT id=x5eb629 color=#0000ff&gt;Then&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb630 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb631 face="新宋体, monospace"&gt;&lt;FONT id=x5eb632 size=2&gt;&lt;FONT id=x5eb633 size=2&gt;result = _people(id)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb634 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb635 face="新宋体, monospace"&gt;&lt;FONT id=x5eb636 size=2&gt;&lt;FONT id=x5eb637 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb638 color=#0000ff&gt;If&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb639 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb640 face="新宋体, monospace"&gt;&lt;FONT id=x5eb641 size=2&gt;&lt;FONT id=x5eb642 color=#0000ff&gt;Return&lt;/FONT&gt;&lt;FONT id=x5eb643 size=2&gt; result&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb644 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb645 face="新宋体, monospace"&gt;&lt;FONT id=x5eb646 size=2&gt;&lt;FONT id=x5eb647 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb648 color=#0000ff&gt;Function&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb649 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb650&gt;&lt;/P&gt; &lt;P id=x5eb651 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb652 face="新宋体, monospace"&gt;&lt;FONT id=x5eb653 size=2&gt;&lt;FONT id=x5eb654 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb655 color=#0000ff&gt;Function&lt;/FONT&gt;&lt;FONT id=x5eb656 size=2&gt; GetPeople() &lt;/FONT&gt;&lt;FONT id=x5eb657 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb658 size=2&gt; Person() &lt;/FONT&gt;&lt;FONT id=x5eb659 color=#0000ff&gt;Implements&lt;/FONT&gt;&lt;FONT id=x5eb660 size=2&gt; IPersonService.GetPeople&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb661 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb662 face="新宋体, monospace"&gt;&lt;FONT id=x5eb663 size=2&gt;&lt;FONT id=x5eb664 color=#0000ff&gt;Dim&lt;/FONT&gt;&lt;FONT id=x5eb665 size=2&gt; result(_people.Count - 1) &lt;/FONT&gt;&lt;FONT id=x5eb666 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb667 size=2&gt; Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb668 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb669 face="新宋体, monospace"&gt;&lt;FONT id=x5eb670 size=2&gt;&lt;FONT id=x5eb671 size=2&gt;_people.Values.CopyTo(result, 0)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb672 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb673 face="新宋体, monospace"&gt;&lt;FONT id=x5eb674 size=2&gt;&lt;FONT id=x5eb675 color=#0000ff&gt;Return&lt;/FONT&gt;&lt;FONT id=x5eb676 size=2&gt; result&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb677 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb678 face="新宋体, monospace"&gt;&lt;FONT id=x5eb679 size=2&gt;&lt;FONT id=x5eb680 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb681 color=#0000ff&gt;Function&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb682 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb683&gt;&lt;/P&gt; &lt;P id=x5eb684 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb685 face="新宋体, monospace"&gt;&lt;FONT id=x5eb686 size=2&gt;&lt;FONT id=x5eb687 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb688 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;FONT id=x5eb689 size=2&gt; UpdatePerson(&lt;/FONT&gt;&lt;FONT id=x5eb690 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb691 size=2&gt; p &lt;/FONT&gt;&lt;FONT id=x5eb692 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb693 size=2&gt; Person) &lt;/FONT&gt;&lt;FONT id=x5eb694 color=#0000ff&gt;Implements&lt;/FONT&gt;&lt;FONT id=x5eb695 size=2&gt; IPersonService.UpdatePerson&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb696 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb697 face="新宋体, monospace"&gt;&lt;FONT id=x5eb698 size=2&gt;&lt;FONT id=x5eb699 color=#0000ff&gt;If&lt;/FONT&gt;&lt;FONT id=x5eb700 size=2&gt; _people.ContainsKey(p.Id) &lt;/FONT&gt;&lt;FONT id=x5eb701 color=#0000ff&gt;Then&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb702 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb703 face="新宋体, monospace"&gt;&lt;FONT id=x5eb704 size=2&gt;&lt;FONT id=x5eb705 size=2&gt;_people(p.Id) = p&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb706 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb707 face="新宋体, monospace"&gt;&lt;FONT id=x5eb708 size=2&gt;&lt;FONT id=x5eb709 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb710 color=#0000ff&gt;If&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb711 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb712 face="新宋体, monospace"&gt;&lt;FONT id=x5eb713 size=2&gt;&lt;FONT id=x5eb714 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb715 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb716 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb717&gt;&lt;/P&gt; &lt;P id=x5eb718 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb719 face="新宋体, monospace"&gt;&lt;FONT id=x5eb720 size=2&gt;&lt;FONT id=x5eb721 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb722 color=#0000ff&gt;Class&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb723 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb724 face="宋体, SimSun"&gt;&lt;FONT id=x5eb725 size=2&gt;&lt;B id=x5eb726&gt;&lt;FONT id=x5eb727 face="Verdana, sans-serif"&gt;Hosts &lt;/FONT&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb728 size=2&gt;是一个控制台程序，它是我们服务的宿主。配置了一个使用了&lt;/FONT&gt;&lt;FONT id=x5eb729 face="宋体, SimSun"&gt;&lt;FONT id=x5eb730 size=2&gt;&lt;FONT id=x5eb731 color=#0033cc&gt;&lt;SPAN id=x5eb732 style="TEXT-DECORATION: none"&gt;&lt;A id=x5eb733 href="http://localhost:8081/PersonService"&gt;&lt;FONT id=x5eb734 face="Verdana, sans-serif"&gt;http://localhost:8081/PersonService&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb735 size=2&gt;地址和&lt;/FONT&gt;&lt;FONT id=x5eb736 face="宋体, SimSun"&gt;&lt;FONT id=x5eb737 size=2&gt;&lt;FONT id=x5eb738 face="Lucida Console, monospace"&gt;basicHttpBinding&lt;/FONT&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb739 size=2&gt;的端点。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb740 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb741 face="宋体, SimSun"&gt;&lt;FONT id=x5eb742 size=2&gt;&lt;B id=x5eb743&gt;&lt;FONT id=x5eb744 face="Verdana, sans-serif"&gt;Hosts &lt;/FONT&gt;&lt;/B&gt;&lt;FONT id=x5eb745 face="Verdana, sans-serif"&gt;is a console application that will be our service host. An endpoint has been configured to use an address of “http://localhost:8081/PersonService” and the &lt;/FONT&gt;&lt;FONT id=x5eb746 face="Lucida Console, monospace"&gt;basicHttpBinding&lt;/FONT&gt;&lt;FONT id=x5eb747 face="Verdana, sans-serif"&gt;.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb748 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb749 face="新宋体, monospace"&gt;&lt;FONT id=x5eb750 size=2&gt;&lt;FONT id=x5eb751 color=#0000ff&gt;Imports&lt;/FONT&gt;&lt;FONT id=x5eb752 size=2&gt; System.ServiceModel&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb753 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb754&gt;&lt;/P&gt; &lt;P id=x5eb755 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb756 face="新宋体, monospace"&gt;&lt;FONT id=x5eb757 size=2&gt;&lt;FONT id=x5eb758 color=#0000ff&gt;Module&lt;/FONT&gt;&lt;FONT id=x5eb759 size=2&gt; Module1&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb760 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb761&gt;&lt;/P&gt; &lt;P id=x5eb762 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb763 face="新宋体, monospace"&gt;&lt;FONT id=x5eb764 size=2&gt;&lt;FONT id=x5eb765 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;FONT id=x5eb766 size=2&gt; Main()&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb767 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb768 face="新宋体, monospace"&gt;&lt;FONT id=x5eb769 size=2&gt;&lt;FONT id=x5eb770 color=#0000ff&gt;Using&lt;/FONT&gt;&lt;FONT id=x5eb771 size=2&gt; host &lt;/FONT&gt;&lt;FONT id=x5eb772 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb773 color=#0000ff&gt;New&lt;/FONT&gt;&lt;FONT id=x5eb774 size=2&gt; ServiceHost(&lt;/FONT&gt;&lt;FONT id=x5eb775 color=#0000ff&gt;GetType&lt;/FONT&gt;&lt;FONT id=x5eb776 size=2&gt;(Services.PersonService))&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb777 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb778 face="新宋体, monospace"&gt;&lt;FONT id=x5eb779 size=2&gt;&lt;FONT id=x5eb780 size=2&gt;host.Open()&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb781 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb782&gt;&lt;/P&gt; &lt;P id=x5eb783 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb784 face="新宋体, monospace"&gt;&lt;FONT id=x5eb785 size=2&gt;&lt;FONT id=x5eb786 size=2&gt;Console.WriteLine(&lt;/FONT&gt;&lt;FONT id=x5eb787 color=#a31515&gt;"Service started"&lt;/FONT&gt;&lt;FONT id=x5eb788 size=2&gt;)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb789 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb790 face="新宋体, monospace"&gt;&lt;FONT id=x5eb791 size=2&gt;&lt;FONT id=x5eb792 size=2&gt;Console.ReadLine()&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb793 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb794 face="新宋体, monospace"&gt;&lt;FONT id=x5eb795 size=2&gt;&lt;FONT id=x5eb796 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb797 color=#0000ff&gt;Using&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb798 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb799 face="新宋体, monospace"&gt;&lt;FONT id=x5eb800 size=2&gt;&lt;FONT id=x5eb801 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb802 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb803 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb804&gt;&lt;/P&gt; &lt;P id=x5eb805 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb806 face="新宋体, monospace"&gt;&lt;FONT id=x5eb807 size=2&gt;&lt;FONT id=x5eb808 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb809 color=#0000ff&gt;Module&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb810 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb811&gt;&lt;BR id=x5eb812&gt;&lt;/P&gt; &lt;P id=x5eb813 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb814 face="新宋体, monospace"&gt;&lt;FONT id=x5eb815 size=2&gt;&lt;FONT id=x5eb816 size=2&gt;&amp;lt;?&lt;/FONT&gt;&lt;FONT id=x5eb817 color=#a31515&gt;xml&lt;/FONT&gt; &lt;FONT id=x5eb818 color=#ff0000&gt;version&lt;/FONT&gt;&lt;FONT id=x5eb819 size=2&gt;="1.0" &lt;/FONT&gt;&lt;FONT id=x5eb820 color=#ff0000&gt;encoding&lt;/FONT&gt;&lt;FONT id=x5eb821 size=2&gt;="utf-8" ?&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb822 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb823 face="新宋体, monospace"&gt;&lt;FONT id=x5eb824 size=2&gt;&lt;FONT id=x5eb825 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT id=x5eb826 color=#a31515&gt;configuration&lt;/FONT&gt;&lt;FONT id=x5eb827 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb828 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb829 face="新宋体, monospace"&gt;&lt;FONT id=x5eb830 size=2&gt;&lt;FONT id=x5eb831 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT id=x5eb832 color=#a31515&gt;system.serviceModel&lt;/FONT&gt;&lt;FONT id=x5eb833 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb834 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb835 face="新宋体, monospace"&gt;&lt;FONT id=x5eb836 size=2&gt;&lt;FONT id=x5eb837 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT id=x5eb838 color=#a31515&gt;behaviors&lt;/FONT&gt;&lt;FONT id=x5eb839 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb840 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb841 face="新宋体, monospace"&gt;&lt;FONT id=x5eb842 size=2&gt;&lt;FONT id=x5eb843 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT id=x5eb844 color=#a31515&gt;serviceBehaviors&lt;/FONT&gt;&lt;FONT id=x5eb845 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb846 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb847 face="新宋体, monospace"&gt;&lt;FONT id=x5eb848 size=2&gt;&lt;FONT id=x5eb849 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT id=x5eb850 color=#a31515&gt;behavior&lt;/FONT&gt; &lt;FONT id=x5eb851 color=#ff0000&gt;name&lt;/FONT&gt;&lt;FONT id=x5eb852 size=2&gt;="MexEnabled"&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb853 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb854 face="新宋体, monospace"&gt;&lt;FONT id=x5eb855 size=2&gt;&lt;FONT id=x5eb856 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT id=x5eb857 color=#a31515&gt;serviceMetadata&lt;/FONT&gt; &lt;FONT id=x5eb858 color=#ff0000&gt;httpGetEnabled&lt;/FONT&gt;&lt;FONT id=x5eb859 size=2&gt;="true" &lt;/FONT&gt;&lt;FONT id=x5eb860 color=#ff0000&gt;httpGetUrl&lt;/FONT&gt;&lt;FONT id=x5eb861 size=2&gt;="http://localhost:8081/PersonService" /&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb862 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb863 face="新宋体, monospace"&gt;&lt;FONT id=x5eb864 size=2&gt;&lt;FONT id=x5eb865 size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT id=x5eb866 color=#a31515&gt;behavior&lt;/FONT&gt;&lt;FONT id=x5eb867 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb868 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb869 face="新宋体, monospace"&gt;&lt;FONT id=x5eb870 size=2&gt;&lt;FONT id=x5eb871 size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT id=x5eb872 color=#a31515&gt;serviceBehaviors&lt;/FONT&gt;&lt;FONT id=x5eb873 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb874 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb875 face="新宋体, monospace"&gt;&lt;FONT id=x5eb876 size=2&gt;&lt;FONT id=x5eb877 size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT id=x5eb878 color=#a31515&gt;behaviors&lt;/FONT&gt;&lt;FONT id=x5eb879 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb880 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb881 face="新宋体, monospace"&gt;&lt;FONT id=x5eb882 size=2&gt;&lt;FONT id=x5eb883 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT id=x5eb884 color=#a31515&gt;services&lt;/FONT&gt;&lt;FONT id=x5eb885 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb886 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb887 face="新宋体, monospace"&gt;&lt;FONT id=x5eb888 size=2&gt;&lt;FONT id=x5eb889 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT id=x5eb890 color=#a31515&gt;service&lt;/FONT&gt; &lt;FONT id=x5eb891 color=#ff0000&gt;behaviorConfiguration&lt;/FONT&gt;&lt;FONT id=x5eb892 size=2&gt;="MexEnabled" &lt;/FONT&gt;&lt;FONT id=x5eb893 color=#ff0000&gt;name&lt;/FONT&gt;&lt;FONT id=x5eb894 size=2&gt;="Services.PersonService"&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb895 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb896 face="新宋体, monospace"&gt;&lt;FONT id=x5eb897 size=2&gt;&lt;FONT id=x5eb898 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT id=x5eb899 color=#a31515&gt;endpoint&lt;/FONT&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb900 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb901 face="新宋体, monospace"&gt;&lt;FONT id=x5eb902 size=2&gt;&lt;FONT id=x5eb903 color=#ff0000&gt;address&lt;/FONT&gt;&lt;FONT id=x5eb904 size=2&gt;="http://localhost:8081/PersonService" &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb905 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb906 face="新宋体, monospace"&gt;&lt;FONT id=x5eb907 size=2&gt;&lt;FONT id=x5eb908 color=#ff0000&gt;binding&lt;/FONT&gt;&lt;FONT id=x5eb909 size=2&gt;="basicHttpBinding"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb910 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb911 face="新宋体, monospace"&gt;&lt;FONT id=x5eb912 size=2&gt;&lt;FONT id=x5eb913 color=#ff0000&gt;bindingConfiguration&lt;/FONT&gt;&lt;FONT id=x5eb914 size=2&gt;="" &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb915 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb916 face="新宋体, monospace"&gt;&lt;FONT id=x5eb917 size=2&gt;&lt;FONT id=x5eb918 color=#ff0000&gt;contract&lt;/FONT&gt;&lt;FONT id=x5eb919 size=2&gt;="Services.IPersonService" /&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb920 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb921 face="新宋体, monospace"&gt;&lt;FONT id=x5eb922 size=2&gt;&lt;FONT id=x5eb923 size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT id=x5eb924 color=#a31515&gt;service&lt;/FONT&gt;&lt;FONT id=x5eb925 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb926 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb927 face="新宋体, monospace"&gt;&lt;FONT id=x5eb928 size=2&gt;&lt;FONT id=x5eb929 size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT id=x5eb930 color=#a31515&gt;services&lt;/FONT&gt;&lt;FONT id=x5eb931 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb932 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb933 face="新宋体, monospace"&gt;&lt;FONT id=x5eb934 size=2&gt;&lt;FONT id=x5eb935 size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT id=x5eb936 color=#a31515&gt;system.serviceModel&lt;/FONT&gt;&lt;FONT id=x5eb937 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb938 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb939 face="新宋体, monospace"&gt;&lt;FONT id=x5eb940 size=2&gt;&lt;FONT id=x5eb941 size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT id=x5eb942 color=#a31515&gt;configuration&lt;/FONT&gt;&lt;FONT id=x5eb943 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb944 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb945&gt;&lt;BR id=x5eb946&gt;&lt;/P&gt; &lt;P id=x5eb947 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb948 size=2&gt;最后， &lt;/FONT&gt;&lt;FONT id=x5eb949 face="宋体, SimSun"&gt;&lt;FONT id=x5eb950 size=2&gt;&lt;B id=x5eb951&gt;&lt;FONT id=x5eb952 face="Verdana, sans-serif"&gt;Client&lt;/FONT&gt;&lt;/B&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb953 size=2&gt;是一&lt;/FONT&gt;&lt;FONT id=x5eb954 face="宋体, SimSun"&gt;&lt;FONT id=x5eb955 size=2&gt;&lt;FONT id=x5eb956 face="Verdana, sans-serif"&gt;Windows Forms &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb957 size=2&gt;项目，将用来浏览也编辑数据。用户界面的元素已经添加到窗体，但还没有实现事件处理。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb958 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb959 face="宋体, SimSun"&gt;&lt;FONT id=x5eb960 size=2&gt;&lt;FONT id=x5eb961 face="Verdana, sans-serif"&gt;Finally, &lt;/FONT&gt;&lt;B id=x5eb962&gt;&lt;FONT id=x5eb963 face="Verdana, sans-serif"&gt;Client&lt;/FONT&gt;&lt;/B&gt;&lt;FONT id=x5eb964 face="Verdana, sans-serif"&gt; is a Windows Forms project that will be used to browse and edit data. The user interface elements have been added to the form, but none of the event handlers have been implemented.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb965 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;IMG id=x5eb966 height=420 src="http://docs.google.com/File?id=dggdkn6_236dzx48zz6_b" width=348 align=bottom border=0 name=bb960413&gt;&lt;/P&gt; &lt;H2 class=western id=x5eb967 style="BACKGROUND: #ffffff; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb968 face="宋体, SimSun"&gt;&lt;FONT id=x5eb969 size=2&gt;数据契约&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt; &lt;H2 class=western id=x5eb970 style="BACKGROUND: #ffffff; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb971 size=2&gt;&lt;FONT id=x5eb972 size=2&gt;Data Contracts&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt; &lt;P id=x5eb973 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb974 size=2&gt;一旦你准备好和编译后，右键单击&lt;/FONT&gt;&lt;FONT id=x5eb975 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb976 size=2&gt;&lt;FONT id=x5eb977 size=2&gt;Hosts&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb978 size=2&gt;项目，并选择调试&lt;/FONT&gt;&lt;FONT id=x5eb979 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb980 size=2&gt;&lt;FONT id=x5eb981 size=2&gt;-&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb982 size=2&gt;启动新的实例。你将收到一个像错误，它看起来像这样样子：&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb983 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb984 face="宋体, SimSun"&gt;&lt;FONT id=x5eb985 size=2&gt;&lt;FONT id=x5eb986 face="Verdana, sans-serif"&gt;Once you have the solution set up and have a clean build, right-click the Hosts project and choose Debug &amp;gt; Start new instance. You should receive an error that looks like this:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb987 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;IMG id=x5eb988 height=272 src="http://docs.google.com/File?id=dggdkn6_237k3ffdng5_b" width=421 align=bottom border=0 name=bb960413&gt;&lt;/P&gt; &lt;P id=x5eb989 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb990 size=2&gt;不像&lt;/FONT&gt;&lt;FONT id=x5eb991 face="宋体, SimSun"&gt;&lt;FONT id=x5eb992 size=2&gt;&lt;FONT id=x5eb993 face="Verdana, sans-serif"&gt;ASMX Web Services&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb994 size=2&gt;，&lt;/FONT&gt;&lt;FONT id=x5eb995 face="宋体, SimSun"&gt;&lt;FONT id=x5eb996 size=2&gt;&lt;FONT id=x5eb997 face="Verdana, sans-serif"&gt;WCF&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb998 size=2&gt;不允许自动序列化对象。所有你接收参数或方法的返回值得类型都必须是可序列化的。虽然你可以通过实现&lt;/FONT&gt;&lt;FONT id=x5eb999 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1000 size=2&gt;&lt;FONT id=x5eb1001 face="Lucida Console, monospace"&gt;IXmlSerializable&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1002 size=2&gt;接口，或者应用&lt;/FONT&gt;&lt;FONT id=x5eb1003 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1004 size=2&gt;&lt;FONT id=x5eb1005 face="Verdana, sans-serif"&gt;Serializable attribute &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1006 size=2&gt;到你的类上，来要完成这个，不过这里推荐使用新的&lt;/FONT&gt;&lt;FONT id=x5eb1007 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1008 size=2&gt;&lt;FONT id=x5eb1009 face="Verdana, sans-serif"&gt;DataContact &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1010 size=2&gt;和 &lt;/FONT&gt;&lt;FONT id=x5eb1011 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1012 size=2&gt;&lt;FONT id=x5eb1013 face="Verdana, sans-serif"&gt;DataMember attributes &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1014 size=2&gt;在&lt;/FONT&gt;&lt;FONT id=x5eb1015 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1016 size=2&gt;&lt;FONT id=x5eb1017 face="Verdana, sans-serif"&gt;System.Runtime.Serialization &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1018 size=2&gt;命名空间。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1019 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1020 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1021 size=2&gt;&lt;FONT id=x5eb1022 face="Verdana, sans-serif"&gt;Unlike ASMX Web Services, WCF does not allow automatic serialization of objects. All types you receive as parameters or return from methods must be serializable. While this can be done by having your type implement the &lt;/FONT&gt;&lt;FONT id=x5eb1023 face="Lucida Console, monospace"&gt;IXmlSerializable&lt;/FONT&gt;&lt;FONT id=x5eb1024 face="Verdana, sans-serif"&gt; interface, or by applying the Serializable attribute to your class, the preferred method is to use the new DataContact and DataMember attributes from the System.Runtime.Serialization namespace.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1025 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1026 size=2&gt;为了解决&lt;/FONT&gt;&lt;FONT id=x5eb1027 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1028 size=2&gt;&lt;FONT id=x5eb1029 face="Lucida Console, monospace"&gt;InvalidDataContractException&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1030 size=2&gt;异常，我们需要添加这些&lt;/FONT&gt;&lt;FONT id=x5eb1031 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1032 size=2&gt;&lt;FONT id=x5eb1033 face="Verdana, sans-serif"&gt;attributes&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1034 size=2&gt;到我们自定义的业务对象上。右键单击&lt;/FONT&gt;&lt;FONT id=x5eb1035 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1036 size=2&gt;&lt;FONT id=x5eb1037 face="Verdana, sans-serif"&gt;Business&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1038 size=2&gt;项目并选择引用，选择&lt;/FONT&gt;&lt;FONT id=x5eb1039 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1040 size=2&gt;&lt;FONT id=x5eb1041 face="Verdana, sans-serif"&gt;System.Runtime.Serialization&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1042 size=2&gt;，然后单击确定。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1043 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1044 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1045 size=2&gt;&lt;FONT id=x5eb1046 face="Verdana, sans-serif"&gt;To address the &lt;/FONT&gt;&lt;FONT id=x5eb1047 face="Lucida Console, monospace"&gt;InvalidDataContractException&lt;/FONT&gt;&lt;FONT id=x5eb1048 face="Verdana, sans-serif"&gt;, we will add these attributes to our custom business object. Right-click the Business project and select Add reference, select System.Runtime.Serialization, and click OK.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1049 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;IMG id=x5eb1050 height=400 src="http://docs.google.com/File?id=dggdkn6_238wt769fhs_b" width=488 align=bottom border=0 name=bb960413&gt;&lt;/P&gt; &lt;P id=x5eb1051 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1052 size=2&gt;在&lt;/FONT&gt;&lt;FONT id=x5eb1053 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1054 size=2&gt;&lt;FONT id=x5eb1055 face="Verdana, sans-serif"&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1056 size=2&gt;类的源代码文件的最顶端添加导入&lt;/FONT&gt;&lt;FONT id=x5eb1057 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1058 size=2&gt;&lt;FONT id=x5eb1059 face="Verdana, sans-serif"&gt;System.Runtime.Serialization&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1060 size=2&gt;命名空间的声明。然后将&lt;/FONT&gt;&lt;FONT id=x5eb1061 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1062 size=2&gt;&lt;FONT id=x5eb1063 face="Lucida Console, monospace"&gt;DataContract&lt;/FONT&gt;&lt;FONT id=x5eb1064 face="Verdana, sans-serif"&gt; attribute&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1065 size=2&gt;添加到&lt;/FONT&gt;&lt;FONT id=x5eb1066 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1067 size=2&gt;&lt;FONT id=x5eb1068 face="Verdana, sans-serif"&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1069 size=2&gt;类的声明上和将&lt;/FONT&gt;&lt;FONT id=x5eb1070 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1071 size=2&gt;&lt;FONT id=x5eb1072 face="Lucida Console, monospace"&gt;DataMember&lt;/FONT&gt;&lt;FONT id=x5eb1073 face="Verdana, sans-serif"&gt; attribute &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1074 size=2&gt;添加到每个属性上。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1075 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1076 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1077 size=2&gt;&lt;FONT id=x5eb1078 face="Verdana, sans-serif"&gt;Add an &lt;/FONT&gt;&lt;FONT id=x5eb1079 face="Lucida Console, monospace"&gt;Imports&lt;/FONT&gt;&lt;FONT id=x5eb1080 face="Verdana, sans-serif"&gt; statement for System.Runtime.Serialization to the top of the source code file for the &lt;/FONT&gt;&lt;FONT id=x5eb1081 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb1082 face="Verdana, sans-serif"&gt; class. Then add the &lt;/FONT&gt;&lt;FONT id=x5eb1083 face="Lucida Console, monospace"&gt;DataContract&lt;/FONT&gt;&lt;FONT id=x5eb1084 face="Verdana, sans-serif"&gt; attribute to the &lt;/FONT&gt;&lt;FONT id=x5eb1085 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb1086 face="Verdana, sans-serif"&gt; class declaration and the &lt;/FONT&gt;&lt;FONT id=x5eb1087 face="Lucida Console, monospace"&gt;DataMember&lt;/FONT&gt;&lt;FONT id=x5eb1088 face="Verdana, sans-serif"&gt; attribute to each of the properties.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1089 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1090 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1091 size=2&gt;&lt;FONT id=x5eb1092 color=#0000ff&gt;Imports&lt;/FONT&gt;&lt;FONT id=x5eb1093 size=2&gt; System.Runtime.Serialization&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1094 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb1095&gt;&lt;/P&gt; &lt;P id=x5eb1096 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1097 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1098 size=2&gt;&lt;FONT id=x5eb1099 size=2&gt;&amp;lt;DataContract()&amp;gt; _&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1100 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1101 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1102 size=2&gt;&lt;FONT id=x5eb1103 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb1104 color=#0000ff&gt;Class&lt;/FONT&gt;&lt;FONT id=x5eb1105 size=2&gt; Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1106 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb1107&gt;&lt;/P&gt; &lt;P id=x5eb1108 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1109 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1110 size=2&gt;&lt;FONT id=x5eb1111 color=#0000ff&gt;Private&lt;/FONT&gt;&lt;FONT id=x5eb1112 size=2&gt; _id &lt;/FONT&gt;&lt;FONT id=x5eb1113 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb1114 color=#0000ff&gt;Integer&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1115 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1116 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1117 size=2&gt;&lt;FONT id=x5eb1118 color=#0000ff&gt;Private&lt;/FONT&gt;&lt;FONT id=x5eb1119 size=2&gt; _name &lt;/FONT&gt;&lt;FONT id=x5eb1120 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb1121 color=#0000ff&gt;String&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1122 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1123 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1124 size=2&gt;&lt;FONT id=x5eb1125 color=#0000ff&gt;Private&lt;/FONT&gt;&lt;FONT id=x5eb1126 size=2&gt; _birthDate &lt;/FONT&gt;&lt;FONT id=x5eb1127 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb1128 size=2&gt; DateTime&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1129 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb1130&gt;&lt;/P&gt; &lt;P id=x5eb1131 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1132 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1133 size=2&gt;&lt;FONT id=x5eb1134 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb1135 color=#0000ff&gt;Sub&lt;/FONT&gt; &lt;FONT id=x5eb1136 color=#0000ff&gt;New&lt;/FONT&gt;&lt;FONT id=x5eb1137 size=2&gt;(&lt;/FONT&gt;&lt;FONT id=x5eb1138 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb1139 size=2&gt; id &lt;/FONT&gt;&lt;FONT id=x5eb1140 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb1141 color=#0000ff&gt;Integer&lt;/FONT&gt;&lt;FONT id=x5eb1142 size=2&gt;, &lt;/FONT&gt;&lt;FONT id=x5eb1143 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb1144 size=2&gt; name &lt;/FONT&gt;&lt;FONT id=x5eb1145 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb1146 color=#0000ff&gt;String&lt;/FONT&gt;&lt;FONT id=x5eb1147 size=2&gt;, &lt;/FONT&gt;&lt;FONT id=x5eb1148 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb1149 size=2&gt; birthDate &lt;/FONT&gt;&lt;FONT id=x5eb1150 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb1151 size=2&gt; DateTime)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1152 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1153 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1154 size=2&gt;&lt;FONT id=x5eb1155 size=2&gt;_id = id&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1156 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1157 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1158 size=2&gt;&lt;FONT id=x5eb1159 size=2&gt;_name = name&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1160 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1161 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1162 size=2&gt;&lt;FONT id=x5eb1163 size=2&gt;_birthDate = birthDate&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1164 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1165 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1166 size=2&gt;&lt;FONT id=x5eb1167 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1168 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1169 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb1170&gt;&lt;/P&gt; &lt;P id=x5eb1171 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1172 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1173 size=2&gt;&lt;FONT id=x5eb1174 size=2&gt;&amp;lt;DataMember()&amp;gt; _&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1175 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1176 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1177 size=2&gt;&lt;FONT id=x5eb1178 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb1179 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;FONT id=x5eb1180 size=2&gt; Id() &lt;/FONT&gt;&lt;FONT id=x5eb1181 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb1182 color=#0000ff&gt;Integer&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1183 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1184 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1185 size=2&gt;&lt;FONT id=x5eb1186 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1187 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1188 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1189 size=2&gt;&lt;FONT id=x5eb1190 color=#0000ff&gt;Return&lt;/FONT&gt;&lt;FONT id=x5eb1191 size=2&gt; _id&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1192 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1193 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1194 size=2&gt;&lt;FONT id=x5eb1195 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1196 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1197 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1198 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1199 size=2&gt;&lt;FONT id=x5eb1200 color=#0000ff&gt;Set&lt;/FONT&gt;&lt;FONT id=x5eb1201 size=2&gt;(&lt;/FONT&gt;&lt;FONT id=x5eb1202 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb1203 size=2&gt; value &lt;/FONT&gt;&lt;FONT id=x5eb1204 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb1205 color=#0000ff&gt;Integer&lt;/FONT&gt;&lt;FONT id=x5eb1206 size=2&gt;)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1207 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1208 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1209 size=2&gt;&lt;FONT id=x5eb1210 size=2&gt;_id = value&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1211 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1212 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1213 size=2&gt;&lt;FONT id=x5eb1214 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1215 color=#0000ff&gt;Set&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1216 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1217 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1218 size=2&gt;&lt;FONT id=x5eb1219 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1220 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1221 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb1222&gt;&lt;/P&gt; &lt;P id=x5eb1223 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1224 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1225 size=2&gt;&lt;FONT id=x5eb1226 size=2&gt;&amp;lt;DataMember()&amp;gt; _&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1227 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1228 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1229 size=2&gt;&lt;FONT id=x5eb1230 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb1231 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;FONT id=x5eb1232 size=2&gt; Name() &lt;/FONT&gt;&lt;FONT id=x5eb1233 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb1234 color=#0000ff&gt;String&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1235 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1236 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1237 size=2&gt;&lt;FONT id=x5eb1238 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1239 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1240 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1241 size=2&gt;&lt;FONT id=x5eb1242 color=#0000ff&gt;Return&lt;/FONT&gt;&lt;FONT id=x5eb1243 size=2&gt; _name&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1244 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1245 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1246 size=2&gt;&lt;FONT id=x5eb1247 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1248 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1249 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1250 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1251 size=2&gt;&lt;FONT id=x5eb1252 color=#0000ff&gt;Set&lt;/FONT&gt;&lt;FONT id=x5eb1253 size=2&gt;(&lt;/FONT&gt;&lt;FONT id=x5eb1254 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb1255 size=2&gt; value &lt;/FONT&gt;&lt;FONT id=x5eb1256 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb1257 color=#0000ff&gt;String&lt;/FONT&gt;&lt;FONT id=x5eb1258 size=2&gt;)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1259 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1260 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1261 size=2&gt;&lt;FONT id=x5eb1262 size=2&gt;_name = value&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1263 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1264 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1265 size=2&gt;&lt;FONT id=x5eb1266 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1267 color=#0000ff&gt;Set&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1268 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1269 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1270 size=2&gt;&lt;FONT id=x5eb1271 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1272 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1273 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb1274&gt;&lt;/P&gt; &lt;P id=x5eb1275 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1276 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1277 size=2&gt;&lt;FONT id=x5eb1278 size=2&gt;&amp;lt;DataMember()&amp;gt; _&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1279 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1280 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1281 size=2&gt;&lt;FONT id=x5eb1282 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb1283 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;FONT id=x5eb1284 size=2&gt; BirthDate() &lt;/FONT&gt;&lt;FONT id=x5eb1285 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb1286 size=2&gt; DateTime&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1287 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1288 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1289 size=2&gt;&lt;FONT id=x5eb1290 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1291 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1292 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1293 size=2&gt;&lt;FONT id=x5eb1294 color=#0000ff&gt;Return&lt;/FONT&gt;&lt;FONT id=x5eb1295 size=2&gt; _birthDate&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1296 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1297 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1298 size=2&gt;&lt;FONT id=x5eb1299 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1300 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1301 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1302 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1303 size=2&gt;&lt;FONT id=x5eb1304 color=#0000ff&gt;Set&lt;/FONT&gt;&lt;FONT id=x5eb1305 size=2&gt;(&lt;/FONT&gt;&lt;FONT id=x5eb1306 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb1307 size=2&gt; value &lt;/FONT&gt;&lt;FONT id=x5eb1308 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb1309 size=2&gt; DateTime)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1310 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1311 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1312 size=2&gt;&lt;FONT id=x5eb1313 size=2&gt;_birthDate = value&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1314 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1315 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1316 size=2&gt;&lt;FONT id=x5eb1317 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1318 color=#0000ff&gt;Set&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1319 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1320 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1321 size=2&gt;&lt;FONT id=x5eb1322 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1323 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1324 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb1325&gt;&lt;/P&gt; &lt;P id=x5eb1326 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1327 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1328 size=2&gt;&lt;FONT id=x5eb1329 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb1330 color=#0000ff&gt;Overrides&lt;/FONT&gt; &lt;FONT id=x5eb1331 color=#0000ff&gt;Function&lt;/FONT&gt;&lt;FONT id=x5eb1332 size=2&gt; ToString() &lt;/FONT&gt;&lt;FONT id=x5eb1333 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb1334 color=#0000ff&gt;String&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1335 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1336 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1337 size=2&gt;&lt;FONT id=x5eb1338 color=#0000ff&gt;Return&lt;/FONT&gt; &lt;FONT id=x5eb1339 color=#0000ff&gt;String&lt;/FONT&gt;&lt;FONT id=x5eb1340 size=2&gt;.Format(&lt;/FONT&gt;&lt;FONT id=x5eb1341 color=#a31515&gt;"{0} [Id:{1}; Birth Date: {2}]"&lt;/FONT&gt;&lt;FONT id=x5eb1342 size=2&gt;, _name, _id, _birthDate)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1343 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1344 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1345 size=2&gt;&lt;FONT id=x5eb1346 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1347 color=#0000ff&gt;Function&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1348 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb1349&gt;&lt;/P&gt; &lt;P id=x5eb1350 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1351 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1352 size=2&gt;&lt;FONT id=x5eb1353 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1354 color=#0000ff&gt;Class&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1355 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1356 size=2&gt;经过这些修改，我们的服务应该可以使用了。右键单击&lt;/FONT&gt;&lt;FONT id=x5eb1357 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb1358 size=2&gt;&lt;FONT id=x5eb1359 size=2&gt;Hosts&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1360 size=2&gt;项目，选择调试 &lt;/FONT&gt;&lt;FONT id=x5eb1361 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb1362 size=2&gt;&lt;FONT id=x5eb1363 size=2&gt;-&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1364 size=2&gt;启动新的实例。这次所有的东西应该正确的工作了：控制台窗口应该显示出来并且应该看到指示服务已经启动的消息。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1365 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1366 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1367 size=2&gt;&lt;FONT id=x5eb1368 face="Verdana, sans-serif"&gt;With these changes, our service should be ready to go. Right-click the Hosts project and select Debug &amp;gt; Start new instance. This time everything should work correctly: the console window should appear and there should be an indication that the service has started. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1369 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1370 size=2&gt;让服务宿主继续运行，右键单击&lt;/FONT&gt;&lt;FONT id=x5eb1371 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1372 size=2&gt;&lt;FONT id=x5eb1373 face="Verdana, sans-serif"&gt;Client&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1374 size=2&gt;项目并选择添加服务引用。输入&lt;/FONT&gt;&lt;FONT id=x5eb1375 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1376 size=2&gt;&lt;FONT id=x5eb1377 color=#0033cc&gt;&lt;SPAN id=x5eb1378 style="TEXT-DECORATION: none"&gt;&lt;A id=x5eb1379 href="http://localhost:8081/PersonService"&gt;&lt;FONT id=x5eb1380 face="Verdana, sans-serif"&gt;http://localhost:8081/PersonService&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1381 size=2&gt;到服务&lt;/FONT&gt;&lt;FONT id=x5eb1382 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1383 size=2&gt;&lt;FONT id=x5eb1384 face="Verdana, sans-serif"&gt;URI&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1385 size=2&gt;中并输入&lt;/FONT&gt;&lt;FONT id=x5eb1386 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1387 size=2&gt;&lt;FONT id=x5eb1388 face="Lucida Console, monospace"&gt;PersonServiceProxy&lt;/FONT&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1389 size=2&gt;到服务引用名字中并点击确定。一旦将服务引用添加到客户端，就可以关闭服务宿主的控制台窗口了。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1390 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1391 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1392 size=2&gt;&lt;FONT id=x5eb1393 face="Verdana, sans-serif"&gt;With the service host still running, right-click the Client project and select Add service reference. Enter “http://localhost:8081/PersonService” for the Service URI and &lt;/FONT&gt;&lt;FONT id=x5eb1394 face="Lucida Console, monospace"&gt;PersonServiceProxy&lt;/FONT&gt;&lt;FONT id=x5eb1395 face="Verdana, sans-serif"&gt; for the Service reference name, and then click OK. Once the service reference has been added to the client, close the service host console window.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;H2 class=western id=x5eb1396 style="BACKGROUND: #ffffff; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1397 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1398 size=2&gt;代理类&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt; &lt;H2 class=western id=x5eb1399 style="BACKGROUND: #ffffff; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1400 size=2&gt;&lt;FONT id=x5eb1401 size=2&gt;Proxy Class&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt; &lt;P id=x5eb1402 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1403 size=2&gt;添加服务对话框做了&lt;/FONT&gt;&lt;FONT id=x5eb1404 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb1405 size=2&gt;&lt;FONT id=x5eb1406 size=2&gt;2&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1407 size=2&gt;件事。一是添加客户端终结点到项目或网站的配置文件中。二是建立服务代理类。要查看代理类，选择&lt;/FONT&gt;&lt;FONT id=x5eb1408 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb1409 size=2&gt;&lt;FONT id=x5eb1410 size=2&gt;Client&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1411 size=2&gt;项目并单击解决方案浏览器工具栏中的显示所有文件按钮。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1412 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb1413&gt;&lt;BR id=x5eb1414&gt;&lt;/P&gt; &lt;P id=x5eb1415 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1416 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1417 size=2&gt;&lt;FONT id=x5eb1418 face="Verdana, sans-serif"&gt;The Add Service Reference dialog does two things. It adds a client endpoint to the configuration for the project or web site, and it creates a service proxy class. To see the proxy class, select the Client project and click the Show All Files button in the Solution Explorer’s toolbar.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1419 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;IMG id=x5eb1420 height=406 src="http://docs.google.com/File?id=dggdkn6_239qz5gpxmm_b" width=250 align=bottom border=0 name=bb960413&gt;&lt;/P&gt; &lt;P id=x5eb1421 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1422 size=2&gt;双击&lt;/FONT&gt;&lt;FONT id=x5eb1423 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1424 size=2&gt;&lt;FONT id=x5eb1425 face="Verdana, sans-serif"&gt;PersonServiceProxy.vb &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1426 size=2&gt;文件，在文本编辑器中打开。在这个部分，我们将说说&lt;/FONT&gt;&lt;FONT id=x5eb1427 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1428 size=2&gt;&lt;FONT id=x5eb1429 face="Verdana, sans-serif"&gt;Preson&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1430 size=2&gt;类。代理类不仅仅包含调用服务的代码，也包含客户端表示业务对象类。服务端发送&lt;/FONT&gt;&lt;FONT id=x5eb1431 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1432 size=2&gt;&lt;FONT id=x5eb1433 face="Verdana, sans-serif"&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1434 size=2&gt;数据将储存在这里。另外，请注意这个类仅用来表示数据，没有函数（方法）。原来类中的方法将不会包含在这里。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1435 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1436 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1437 size=2&gt;&lt;FONT id=x5eb1438 face="Verdana, sans-serif"&gt;Double-click PersonServiceProxy.vb to open it in the text editor. The part we are interested in is the &lt;/FONT&gt;&lt;FONT id=x5eb1439 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb1440 face="Verdana, sans-serif"&gt; class. Not only does the proxy contain the code we need to call our service, it also has a client-side representation of our business class. When the data for a &lt;/FONT&gt;&lt;FONT id=x5eb1441 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb1442 face="Verdana, sans-serif"&gt; is sent from the service, it will be stored here. Also note that this class only represents the data, not the functionality. None of the methods from the original class will be included here.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1443 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1444 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1445 size=2&gt;&lt;FONT id=x5eb1446 size=2&gt;&amp;lt;System.CodeDom.Compiler.GeneratedCodeAttribute(&lt;/FONT&gt;&lt;FONT id=x5eb1447 color=#a31515&gt;"System.Runtime.Serialization"&lt;/FONT&gt;&lt;FONT id=x5eb1448 size=2&gt;, &lt;/FONT&gt;&lt;FONT id=x5eb1449 color=#a31515&gt;"3.0.0.0"&lt;/FONT&gt;&lt;FONT id=x5eb1450 size=2&gt;), _&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1451 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1452 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1453 size=2&gt;&lt;FONT id=x5eb1454 size=2&gt;System.Runtime.Serialization.DataContractAttribute([Namespace]:=&lt;/FONT&gt;&lt;FONT id=x5eb1455 color=#a31515&gt;"http://schemas.datacontract.org/2004/07/Business"&lt;/FONT&gt;&lt;FONT id=x5eb1456 size=2&gt;), _&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1457 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1458 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1459 size=2&gt;&lt;FONT id=x5eb1460 size=2&gt;System.SerializableAttribute()&amp;gt; _&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1461 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1462 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1463 size=2&gt;&lt;FONT id=x5eb1464 color=#0000ff&gt;Partial&lt;/FONT&gt; &lt;FONT id=x5eb1465 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb1466 color=#0000ff&gt;Class&lt;/FONT&gt;&lt;FONT id=x5eb1467 size=2&gt; Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1468 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1469 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1470 size=2&gt;&lt;FONT id=x5eb1471 color=#0000ff&gt;Inherits&lt;/FONT&gt; &lt;FONT id=x5eb1472 color=#0000ff&gt;Object&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1473 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1474 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1475 size=2&gt;&lt;FONT id=x5eb1476 color=#0000ff&gt;Implements&lt;/FONT&gt;&lt;FONT id=x5eb1477 size=2&gt; System.Runtime.Serialization.IExtensibleDataObject&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1478 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt; &lt;/P&gt; &lt;P id=x5eb1479 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1480 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1481 size=2&gt;&lt;FONT id=x5eb1482 size=2&gt;&amp;lt;System.NonSerializedAttribute()&amp;gt; _&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1483 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1484 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1485 size=2&gt;&lt;FONT id=x5eb1486 color=#0000ff&gt;Private&lt;/FONT&gt;&lt;FONT id=x5eb1487 size=2&gt; extensionDataField &lt;/FONT&gt;&lt;FONT id=x5eb1488 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb1489 size=2&gt; System.Runtime.Serialization.ExtensionDataObject&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1490 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt; &lt;/P&gt; &lt;P id=x5eb1491 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1492 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1493 size=2&gt;&lt;FONT id=x5eb1494 size=2&gt;&amp;lt;System.Runtime.Serialization.OptionalFieldAttribute()&amp;gt; _&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1495 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1496 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1497 size=2&gt;&lt;FONT id=x5eb1498 color=#0000ff&gt;Private&lt;/FONT&gt;&lt;FONT id=x5eb1499 size=2&gt; BirthDateField &lt;/FONT&gt;&lt;FONT id=x5eb1500 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb1501 color=#0000ff&gt;Date&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1502 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt; &lt;/P&gt; &lt;P id=x5eb1503 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1504 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1505 size=2&gt;&lt;FONT id=x5eb1506 size=2&gt;&amp;lt;System.Runtime.Serialization.OptionalFieldAttribute()&amp;gt; _&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1507 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1508 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1509 size=2&gt;&lt;FONT id=x5eb1510 color=#0000ff&gt;Private&lt;/FONT&gt;&lt;FONT id=x5eb1511 size=2&gt; IdField &lt;/FONT&gt;&lt;FONT id=x5eb1512 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb1513 color=#0000ff&gt;Integer&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1514 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt; &lt;/P&gt; &lt;P id=x5eb1515 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1516 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1517 size=2&gt;&lt;FONT id=x5eb1518 size=2&gt;&amp;lt;System.Runtime.Serialization.OptionalFieldAttribute()&amp;gt; _&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1519 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1520 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1521 size=2&gt;&lt;FONT id=x5eb1522 color=#0000ff&gt;Private&lt;/FONT&gt;&lt;FONT id=x5eb1523 size=2&gt; NameField &lt;/FONT&gt;&lt;FONT id=x5eb1524 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb1525 color=#0000ff&gt;String&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1526 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt; &lt;/P&gt; &lt;P id=x5eb1527 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1528 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1529 size=2&gt;&lt;FONT id=x5eb1530 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb1531 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;FONT id=x5eb1532 size=2&gt; ExtensionData() &lt;/FONT&gt;&lt;FONT id=x5eb1533 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb1534 size=2&gt; System.Runtime.Serialization.ExtensionDataObject &lt;/FONT&gt;&lt;FONT id=x5eb1535 color=#0000ff&gt;Implements&lt;/FONT&gt;&lt;FONT id=x5eb1536 size=2&gt; System.Runtime.Serialization.IExtensibleDataObject.ExtensionData&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1537 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1538 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1539 size=2&gt;&lt;FONT id=x5eb1540 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1541 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1542 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1543 size=2&gt;&lt;FONT id=x5eb1544 color=#0000ff&gt;Return&lt;/FONT&gt; &lt;FONT id=x5eb1545 color=#0000ff&gt;Me&lt;/FONT&gt;&lt;FONT id=x5eb1546 size=2&gt;.extensionDataField&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1547 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1548 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1549 size=2&gt;&lt;FONT id=x5eb1550 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1551 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1552 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1553 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1554 size=2&gt;&lt;FONT id=x5eb1555 color=#0000ff&gt;Set&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1556 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1557 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1558 size=2&gt;&lt;FONT id=x5eb1559 color=#0000ff&gt;Me&lt;/FONT&gt;&lt;FONT id=x5eb1560 size=2&gt;.extensionDataField = value&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1561 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1562 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1563 size=2&gt;&lt;FONT id=x5eb1564 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1565 color=#0000ff&gt;Set&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1566 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1567 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1568 size=2&gt;&lt;FONT id=x5eb1569 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1570 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1571 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt; &lt;/P&gt; &lt;P id=x5eb1572 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1573 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1574 size=2&gt;&lt;FONT id=x5eb1575 size=2&gt;&amp;lt;System.Runtime.Serialization.DataMemberAttribute()&amp;gt; _&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1576 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1577 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1578 size=2&gt;&lt;FONT id=x5eb1579 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb1580 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;FONT id=x5eb1581 size=2&gt; BirthDate() &lt;/FONT&gt;&lt;FONT id=x5eb1582 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb1583 color=#0000ff&gt;Date&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1584 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1585 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1586 size=2&gt;&lt;FONT id=x5eb1587 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1588 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1589 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1590 size=2&gt;&lt;FONT id=x5eb1591 color=#0000ff&gt;Return&lt;/FONT&gt; &lt;FONT id=x5eb1592 color=#0000ff&gt;Me&lt;/FONT&gt;&lt;FONT id=x5eb1593 size=2&gt;.BirthDateField&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1594 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1595 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1596 size=2&gt;&lt;FONT id=x5eb1597 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1598 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1599 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1600 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1601 size=2&gt;&lt;FONT id=x5eb1602 color=#0000ff&gt;Set&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1603 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1604 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1605 size=2&gt;&lt;FONT id=x5eb1606 color=#0000ff&gt;Me&lt;/FONT&gt;&lt;FONT id=x5eb1607 size=2&gt;.BirthDateField = value&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1608 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1609 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1610 size=2&gt;&lt;FONT id=x5eb1611 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1612 color=#0000ff&gt;Set&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1613 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1614 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1615 size=2&gt;&lt;FONT id=x5eb1616 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1617 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1618 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt; &lt;/P&gt; &lt;P id=x5eb1619 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1620 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1621 size=2&gt;&lt;FONT id=x5eb1622 size=2&gt;&amp;lt;System.Runtime.Serialization.DataMemberAttribute()&amp;gt; _&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1623 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1624 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1625 size=2&gt;&lt;FONT id=x5eb1626 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb1627 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;FONT id=x5eb1628 size=2&gt; Id() &lt;/FONT&gt;&lt;FONT id=x5eb1629 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb1630 color=#0000ff&gt;Integer&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1631 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1632 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1633 size=2&gt;&lt;FONT id=x5eb1634 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1635 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1636 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1637 size=2&gt;&lt;FONT id=x5eb1638 color=#0000ff&gt;Return&lt;/FONT&gt; &lt;FONT id=x5eb1639 color=#0000ff&gt;Me&lt;/FONT&gt;&lt;FONT id=x5eb1640 size=2&gt;.IdField&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1641 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1642 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1643 size=2&gt;&lt;FONT id=x5eb1644 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1645 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1646 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1647 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1648 size=2&gt;&lt;FONT id=x5eb1649 color=#0000ff&gt;Set&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1650 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1651 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1652 size=2&gt;&lt;FONT id=x5eb1653 color=#0000ff&gt;Me&lt;/FONT&gt;&lt;FONT id=x5eb1654 size=2&gt;.IdField = value&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1655 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1656 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1657 size=2&gt;&lt;FONT id=x5eb1658 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1659 color=#0000ff&gt;Set&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1660 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1661 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1662 size=2&gt;&lt;FONT id=x5eb1663 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1664 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1665 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt; &lt;/P&gt; &lt;P id=x5eb1666 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1667 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1668 size=2&gt;&lt;FONT id=x5eb1669 size=2&gt;&amp;lt;System.Runtime.Serialization.DataMemberAttribute()&amp;gt; _&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1670 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1671 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1672 size=2&gt;&lt;FONT id=x5eb1673 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb1674 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;FONT id=x5eb1675 size=2&gt; Name() &lt;/FONT&gt;&lt;FONT id=x5eb1676 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb1677 color=#0000ff&gt;String&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1678 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1679 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1680 size=2&gt;&lt;FONT id=x5eb1681 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1682 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1683 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1684 size=2&gt;&lt;FONT id=x5eb1685 color=#0000ff&gt;Return&lt;/FONT&gt; &lt;FONT id=x5eb1686 color=#0000ff&gt;Me&lt;/FONT&gt;&lt;FONT id=x5eb1687 size=2&gt;.NameField&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1688 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1689 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1690 size=2&gt;&lt;FONT id=x5eb1691 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1692 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1693 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1694 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1695 size=2&gt;&lt;FONT id=x5eb1696 color=#0000ff&gt;Set&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1697 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1698 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1699 size=2&gt;&lt;FONT id=x5eb1700 color=#0000ff&gt;Me&lt;/FONT&gt;&lt;FONT id=x5eb1701 size=2&gt;.NameField = value&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1702 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1703 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1704 size=2&gt;&lt;FONT id=x5eb1705 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1706 color=#0000ff&gt;Set&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1707 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1708 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1709 size=2&gt;&lt;FONT id=x5eb1710 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1711 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1712 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1713 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1714 size=2&gt;&lt;FONT id=x5eb1715 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1716 color=#0000ff&gt;Class&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;H2 class=western id=x5eb1717 style="BACKGROUND: #ffffff; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1718 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1719 size=2&gt;使用服务&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt; &lt;H2 class=western id=x5eb1720 style="BACKGROUND: #ffffff; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1721 size=2&gt;&lt;FONT id=x5eb1722 size=2&gt;Using the Service&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt; &lt;P id=x5eb1723 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1724 size=2&gt;现在我们有了代理类，我们可以向客户端添加逻辑了。我们将添加&lt;/FONT&gt;&lt;FONT id=x5eb1725 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1726 size=2&gt;&lt;FONT id=x5eb1727 face="Verdana, sans-serif"&gt;ListBox&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1728 size=2&gt;填充代码，在窗体载入的时候。为窗体的&lt;/FONT&gt;&lt;FONT id=x5eb1729 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1730 size=2&gt;&lt;FONT id=x5eb1731 face="Verdana, sans-serif"&gt;Load&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1732 size=2&gt;事件和&lt;/FONT&gt;&lt;FONT id=x5eb1733 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1734 size=2&gt;&lt;FONT id=x5eb1735 face="Verdana, sans-serif"&gt;ListBox&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1736 size=2&gt;的&lt;/FONT&gt;&lt;FONT id=x5eb1737 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1738 size=2&gt;&lt;FONT id=x5eb1739 face="Lucida Console, monospace"&gt;SelectedIndexChanged&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1740 size=2&gt;事件添加事件处理。&lt;/FONT&gt;&lt;FONT id=x5eb1741 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1742 size=2&gt;&lt;FONT id=x5eb1743 face="Verdana, sans-serif"&gt;Leave these empty for now. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1744 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1745 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1746 size=2&gt;&lt;FONT id=x5eb1747 face="Verdana, sans-serif"&gt;Now that we have the proxy, we can add the logic to our client application. We will start by adding code to populate the list box when the form loads. Add event handlers for the form’s &lt;/FONT&gt;&lt;FONT id=x5eb1748 face="Lucida Console, monospace"&gt;Load&lt;/FONT&gt;&lt;FONT id=x5eb1749 face="Verdana, sans-serif"&gt; event and the list box's &lt;/FONT&gt;&lt;FONT id=x5eb1750 face="Lucida Console, monospace"&gt;SelectedIndexChanged&lt;/FONT&gt;&lt;FONT id=x5eb1751 face="Verdana, sans-serif"&gt; event. Leave these empty for now. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1752 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1753 size=2&gt;就如下面的代码，添加一个私有的子过程&lt;/FONT&gt;&lt;FONT id=x5eb1754 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1755 size=2&gt;&lt;FONT id=x5eb1756 face="Lucida Console, monospace"&gt;LoadListBox.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1757 size=2&gt;在这个方法中我们建立一个服务实例并将调用&lt;/FONT&gt;&lt;FONT id=x5eb1758 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1759 size=2&gt;&lt;FONT id=x5eb1760 face="Lucida Console, monospace"&gt;GetPeople&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1761 size=2&gt;方法的返回值绑定到&lt;/FONT&gt;&lt;FONT id=x5eb1762 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1763 size=2&gt;&lt;FONT id=x5eb1764 face="Lucida Console, monospace"&gt;ListBox&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1765 size=2&gt;上。一旦&lt;/FONT&gt;&lt;FONT id=x5eb1766 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1767 size=2&gt;&lt;FONT id=x5eb1768 face="Lucida Console, monospace"&gt;ListBox&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1769 size=2&gt;填充了数据，我们将激活&lt;/FONT&gt;&lt;FONT id=x5eb1770 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1771 size=2&gt;&lt;FONT id=x5eb1772 face="Lucida Console, monospace"&gt;SelectedIndexChanged&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1773 size=2&gt;事件处理。为了执行这个方法，还需要在在窗体的&lt;/FONT&gt;&lt;FONT id=x5eb1774 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1775 size=2&gt;&lt;FONT id=x5eb1776 face="Lucida Console, monospace"&gt;Load&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1777 size=2&gt;事件中调用&lt;/FONT&gt;&lt;FONT id=x5eb1778 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1779 size=2&gt;&lt;FONT id=x5eb1780 face="Lucida Console, monospace"&gt;LoadListBox&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1781 size=2&gt;。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1782 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1783 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1784 size=2&gt;&lt;FONT id=x5eb1785 face="Verdana, sans-serif"&gt;Just below this code, add the declaration for a private subroutine called &lt;/FONT&gt;&lt;FONT id=x5eb1786 face="Lucida Console, monospace"&gt;LoadListBox&lt;/FONT&gt;&lt;FONT id=x5eb1787 face="Verdana, sans-serif"&gt;. In this method we want to create an instance of our service proxy and then data bind the results of calling &lt;/FONT&gt;&lt;FONT id=x5eb1788 face="Lucida Console, monospace"&gt;GetPeople&lt;/FONT&gt;&lt;FONT id=x5eb1789 face="Verdana, sans-serif"&gt; to the list box. Once the list box is populated, we want to activate the event handler for the &lt;/FONT&gt;&lt;FONT id=x5eb1790 face="Lucida Console, monospace"&gt;SelectedIndexChanged&lt;/FONT&gt;&lt;FONT id=x5eb1791 face="Verdana, sans-serif"&gt; event. With this method complete, have the form’s &lt;/FONT&gt;&lt;FONT id=x5eb1792 face="Lucida Console, monospace"&gt;Load&lt;/FONT&gt;&lt;FONT id=x5eb1793 face="Verdana, sans-serif"&gt; event call &lt;/FONT&gt;&lt;FONT id=x5eb1794 face="Lucida Console, monospace"&gt;LoadListBox&lt;/FONT&gt;&lt;FONT id=x5eb1795 face="Verdana, sans-serif"&gt;.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1796 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1797 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1798 size=2&gt;&lt;FONT id=x5eb1799 color=#0000ff&gt;Private&lt;/FONT&gt; &lt;FONT id=x5eb1800 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;FONT id=x5eb1801 size=2&gt; Form1_Load(&lt;/FONT&gt;&lt;FONT id=x5eb1802 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb1803 size=2&gt; sender &lt;/FONT&gt;&lt;FONT id=x5eb1804 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb1805 size=2&gt; System.Object, &lt;/FONT&gt;&lt;FONT id=x5eb1806 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb1807 size=2&gt; e &lt;/FONT&gt;&lt;FONT id=x5eb1808 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb1809 size=2&gt; System.EventArgs) &lt;/FONT&gt;&lt;FONT id=x5eb1810 color=#0000ff&gt;Handles&lt;/FONT&gt; &lt;FONT id=x5eb1811 color=#0000ff&gt;MyBase&lt;/FONT&gt;&lt;FONT id=x5eb1812 size=2&gt;.Load&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1813 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1814 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1815 size=2&gt;&lt;FONT id=x5eb1816 size=2&gt;LoadListBox()&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1817 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1818 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1819 size=2&gt;&lt;FONT id=x5eb1820 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1821 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1822 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb1823&gt;&lt;/P&gt; &lt;P id=x5eb1824 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1825 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1826 size=2&gt;&lt;FONT id=x5eb1827 color=#0000ff&gt;Private&lt;/FONT&gt; &lt;FONT id=x5eb1828 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;FONT id=x5eb1829 size=2&gt; LoadListBox()&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1830 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1831 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1832 size=2&gt;&lt;FONT id=x5eb1833 color=#0000ff&gt;Using&lt;/FONT&gt;&lt;FONT id=x5eb1834 size=2&gt; ws &lt;/FONT&gt;&lt;FONT id=x5eb1835 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb1836 color=#0000ff&gt;New&lt;/FONT&gt;&lt;FONT id=x5eb1837 size=2&gt; PersonServiceProxy.PersonServiceClient&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1838 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1839 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1840 size=2&gt;&lt;FONT id=x5eb1841 size=2&gt;PeopleListBox.DataSource = ws.GetPeople()&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1842 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1843 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1844 size=2&gt;&lt;FONT id=x5eb1845 size=2&gt;PeopleListBox.DisplayMember = &lt;/FONT&gt;&lt;FONT id=x5eb1846 color=#a31515&gt;"Name"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1847 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1848 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1849 size=2&gt;&lt;FONT id=x5eb1850 size=2&gt;PeopleListBox.ValueMember = &lt;/FONT&gt;&lt;FONT id=x5eb1851 color=#a31515&gt;"Id"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1852 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1853 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1854 size=2&gt;&lt;FONT id=x5eb1855 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1856 color=#0000ff&gt;Using&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1857 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb1858&gt;&lt;/P&gt; &lt;P id=x5eb1859 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1860 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1861 size=2&gt;&lt;FONT id=x5eb1862 size=2&gt;PeopleListBox_SelectedIndexChanged(&lt;/FONT&gt;&lt;FONT id=x5eb1863 color=#0000ff&gt;Me&lt;/FONT&gt;&lt;FONT id=x5eb1864 size=2&gt;, EventArgs.Empty)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1865 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1866 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1867 size=2&gt;&lt;FONT id=x5eb1868 color=#0000ff&gt;AddHandler&lt;/FONT&gt;&lt;FONT id=x5eb1869 size=2&gt; PeopleListBox.SelectedIndexChanged, &lt;/FONT&gt;&lt;FONT id=x5eb1870 color=#0000ff&gt;AddressOf&lt;/FONT&gt;&lt;FONT id=x5eb1871 size=2&gt; PeopleListBox_SelectedIndexChanged&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1872 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1873 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1874 size=2&gt;&lt;FONT id=x5eb1875 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1876 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1877 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1878 size=2&gt;现在，当用户选择&lt;/FONT&gt;&lt;FONT id=x5eb1879 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1880 size=2&gt;&lt;FONT id=x5eb1881 face="Verdana, sans-serif"&gt;ListBox&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1882 size=2&gt;中的项目时，我们希望显示关联的&lt;/FONT&gt;&lt;FONT id=x5eb1883 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1884 size=2&gt;&lt;FONT id=x5eb1885 face="Verdana, sans-serif"&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1886 size=2&gt;对象数据在下面的区域中。在&lt;/FONT&gt;&lt;FONT id=x5eb1887 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1888 size=2&gt;&lt;FONT id=x5eb1889 face="Lucida Console, monospace"&gt;SelectedIndexChanged&lt;/FONT&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1890 size=2&gt;事件处理中，建立服务代理实例并调用&lt;/FONT&gt;&lt;FONT id=x5eb1891 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1892 size=2&gt;&lt;FONT id=x5eb1893 face="Verdana, sans-serif"&gt;GetPerson&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1894 size=2&gt;方法，将&lt;/FONT&gt;&lt;FONT id=x5eb1895 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1896 size=2&gt;&lt;FONT id=x5eb1897 face="Verdana, sans-serif"&gt;ListBox&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1898 size=2&gt;的&lt;/FONT&gt;&lt;FONT id=x5eb1899 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1900 size=2&gt;&lt;FONT id=x5eb1901 face="Lucida Console, monospace"&gt;SelectedValue&lt;/FONT&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1902 size=2&gt;作为参数传入。我们需要一个变量来储存结果，所以我们声明了一个私有字段（如类级别的）叫做&lt;/FONT&gt;&lt;FONT id=x5eb1903 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1904 size=2&gt;&lt;FONT id=x5eb1905 face="Lucida Console, monospace"&gt;_person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1906 size=2&gt;并使用它。然后将&lt;/FONT&gt;&lt;FONT id=x5eb1907 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1908 size=2&gt;&lt;FONT id=x5eb1909 face="Verdana, sans-serif"&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1910 size=2&gt;对象的属性值复制到文本框中。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1911 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1912 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1913 size=2&gt;&lt;FONT id=x5eb1914 face="Verdana, sans-serif"&gt;Now, when the user selects an item in the list box, we want to show the data for the associated &lt;/FONT&gt;&lt;FONT id=x5eb1915 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb1916 face="Verdana, sans-serif"&gt; object in the data entry area below. In the &lt;/FONT&gt;&lt;FONT id=x5eb1917 face="Lucida Console, monospace"&gt;SelectedIndexChanged&lt;/FONT&gt;&lt;FONT id=x5eb1918 face="Verdana, sans-serif"&gt; event hander, create an instance of the service proxy and call &lt;/FONT&gt;&lt;FONT id=x5eb1919 face="Lucida Console, monospace"&gt;GetPerson&lt;/FONT&gt;&lt;FONT id=x5eb1920 face="Verdana, sans-serif"&gt;, passing in the &lt;/FONT&gt;&lt;FONT id=x5eb1921 face="Lucida Console, monospace"&gt;SelectedValue&lt;/FONT&gt;&lt;FONT id=x5eb1922 face="Verdana, sans-serif"&gt; from the list box (cast to an integer) as a parameter. We’ll need a variable to store the result, so declare a private field (i.e., a class-level variable) called &lt;/FONT&gt;&lt;FONT id=x5eb1923 face="Lucida Console, monospace"&gt;_person&lt;/FONT&gt;&lt;FONT id=x5eb1924 face="Verdana, sans-serif"&gt; and use it. Then copy the values of the properties from the &lt;/FONT&gt;&lt;FONT id=x5eb1925 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb1926 face="Verdana, sans-serif"&gt; object into the text boxes.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1927 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1928 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1929 size=2&gt;&lt;FONT id=x5eb1930 color=#0000ff&gt;Private&lt;/FONT&gt; &lt;FONT id=x5eb1931 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;FONT id=x5eb1932 size=2&gt; PeopleListBox_SelectedIndexChanged(&lt;/FONT&gt;&lt;FONT id=x5eb1933 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb1934 size=2&gt; sender &lt;/FONT&gt;&lt;FONT id=x5eb1935 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb1936 size=2&gt; System.Object, &lt;/FONT&gt;&lt;FONT id=x5eb1937 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb1938 size=2&gt; e &lt;/FONT&gt;&lt;FONT id=x5eb1939 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb1940 size=2&gt; System.EventArgs)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1941 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1942 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1943 size=2&gt;&lt;FONT id=x5eb1944 color=#0000ff&gt;Using&lt;/FONT&gt;&lt;FONT id=x5eb1945 size=2&gt; ws &lt;/FONT&gt;&lt;FONT id=x5eb1946 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb1947 color=#0000ff&gt;New&lt;/FONT&gt;&lt;FONT id=x5eb1948 size=2&gt; PersonServiceProxy.PersonServiceClient&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1949 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1950 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1951 size=2&gt;&lt;FONT id=x5eb1952 size=2&gt;_person = ws.GetPerson(&lt;/FONT&gt;&lt;FONT id=x5eb1953 color=#0000ff&gt;CInt&lt;/FONT&gt;&lt;FONT id=x5eb1954 size=2&gt;(PeopleListBox.SelectedValue))&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1955 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1956 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1957 size=2&gt;&lt;FONT id=x5eb1958 size=2&gt;IdTextBox.Text = _person.Id&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1959 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1960 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1961 size=2&gt;&lt;FONT id=x5eb1962 size=2&gt;NameTextBox.Text = _person.Name&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1963 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1964 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1965 size=2&gt;&lt;FONT id=x5eb1966 size=2&gt;BirthDateTextBox.Text = _person.BirthDate.ToShortDateString()&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1967 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1968 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1969 size=2&gt;&lt;FONT id=x5eb1970 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1971 color=#0000ff&gt;Using&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1972 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1973 face="新宋体, monospace"&gt;&lt;FONT id=x5eb1974 size=2&gt;&lt;FONT id=x5eb1975 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb1976 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1977 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb1978 size=2&gt;最后，在&lt;/FONT&gt;&lt;FONT id=x5eb1979 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1980 size=2&gt;&lt;FONT id=x5eb1981 face="Verdana, sans-serif"&gt;Save&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1982 size=2&gt;按钮的单击（&lt;/FONT&gt;&lt;FONT id=x5eb1983 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1984 size=2&gt;&lt;FONT id=x5eb1985 face="Verdana, sans-serif"&gt;Click&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1986 size=2&gt;）事件中，我们希望反转这个过程。将文本框里的值复制到&lt;/FONT&gt;&lt;FONT id=x5eb1987 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1988 size=2&gt;&lt;FONT id=x5eb1989 face="Verdana, sans-serif"&gt;_person &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1990 size=2&gt;字段的属性中，建立服务代理实例，并调用&lt;/FONT&gt;&lt;FONT id=x5eb1991 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1992 size=2&gt;&lt;FONT id=x5eb1993 face="Lucida Console, monospace"&gt;UpdatePerson&lt;/FONT&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1994 size=2&gt;发送更给到服务。最后，在调用&lt;/FONT&gt;&lt;FONT id=x5eb1995 face="宋体, SimSun"&gt;&lt;FONT id=x5eb1996 size=2&gt;&lt;FONT id=x5eb1997 face="Lucida Console, monospace"&gt;LoadListBox&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb1998 size=2&gt;方法来重新加载服务上的数据（你更改的）。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb1999 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2000 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2001 size=2&gt;&lt;FONT id=x5eb2002 face="Verdana, sans-serif"&gt;Finally, in the Save button’s &lt;/FONT&gt;&lt;FONT id=x5eb2003 face="Lucida Console, monospace"&gt;Click&lt;/FONT&gt;&lt;FONT id=x5eb2004 face="Verdana, sans-serif"&gt; event, we want to reverse this process. Copy the values of the text boxes into the _person field’s properties, create an instance of the service proxy, and then call &lt;/FONT&gt;&lt;FONT id=x5eb2005 face="Lucida Console, monospace"&gt;UpdatePerson&lt;/FONT&gt;&lt;FONT id=x5eb2006 face="Verdana, sans-serif"&gt; to send the changes back to the service. The last line should be a call to &lt;/FONT&gt;&lt;FONT id=x5eb2007 face="Lucida Console, monospace"&gt;LoadListBox&lt;/FONT&gt;&lt;FONT id=x5eb2008 face="Verdana, sans-serif"&gt; to reload the data (with your changes) from the service.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2009 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2010 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2011 size=2&gt;&lt;FONT id=x5eb2012 color=#0000ff&gt;Private&lt;/FONT&gt; &lt;FONT id=x5eb2013 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;FONT id=x5eb2014 size=2&gt; SaveButton_Click(&lt;/FONT&gt;&lt;FONT id=x5eb2015 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb2016 size=2&gt; sender &lt;/FONT&gt;&lt;FONT id=x5eb2017 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb2018 size=2&gt; System.Object, &lt;/FONT&gt;&lt;FONT id=x5eb2019 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb2020 size=2&gt; e &lt;/FONT&gt;&lt;FONT id=x5eb2021 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb2022 size=2&gt; System.EventArgs) &lt;/FONT&gt;&lt;FONT id=x5eb2023 color=#0000ff&gt;Handles&lt;/FONT&gt;&lt;FONT id=x5eb2024 size=2&gt; SaveButton.Click&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2025 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2026 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2027 size=2&gt;&lt;FONT id=x5eb2028 size=2&gt;_person.Id = IdTextBox.Text&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2029 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2030 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2031 size=2&gt;&lt;FONT id=x5eb2032 size=2&gt;_person.Name = NameTextBox.Text&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2033 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2034 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2035 size=2&gt;&lt;FONT id=x5eb2036 size=2&gt;_person.BirthDate = &lt;/FONT&gt;&lt;FONT id=x5eb2037 color=#0000ff&gt;CDate&lt;/FONT&gt;&lt;FONT id=x5eb2038 size=2&gt;(BirthDateTextBox.Text)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2039 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2040 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2041 size=2&gt;&lt;FONT id=x5eb2042 color=#0000ff&gt;Using&lt;/FONT&gt;&lt;FONT id=x5eb2043 size=2&gt; ws &lt;/FONT&gt;&lt;FONT id=x5eb2044 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb2045 color=#0000ff&gt;New&lt;/FONT&gt;&lt;FONT id=x5eb2046 size=2&gt; PersonServiceProxy.PersonServiceClient&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2047 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2048 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2049 size=2&gt;&lt;FONT id=x5eb2050 size=2&gt;ws.UpdatePerson(_person)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2051 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2052 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2053 size=2&gt;&lt;FONT id=x5eb2054 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2055 color=#0000ff&gt;Using&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2056 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2057 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2058 size=2&gt;&lt;FONT id=x5eb2059 size=2&gt;LoadListBox()&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2060 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2061 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2062 size=2&gt;&lt;FONT id=x5eb2063 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2064 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2065 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2066 size=2&gt;完成后，你应该就能够测试了。我们需要启动&lt;/FONT&gt;&lt;FONT id=x5eb2067 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2068 size=2&gt;&lt;FONT id=x5eb2069 face="Verdana, sans-serif"&gt;Client&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2070 size=2&gt;和&lt;/FONT&gt;&lt;FONT id=x5eb2071 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2072 size=2&gt;&lt;FONT id=x5eb2073 face="Verdana, sans-serif"&gt;service host &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2074 size=2&gt;来运行程序，所以右键单击解决方案并选择属性。选择多启动项目并设置&lt;/FONT&gt;&lt;FONT id=x5eb2075 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2076 size=2&gt;&lt;FONT id=x5eb2077 face="Verdana, sans-serif"&gt;Hosts&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2078 size=2&gt;项目先于&lt;/FONT&gt;&lt;FONT id=x5eb2079 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2080 size=2&gt;&lt;FONT id=x5eb2081 face="Verdana, sans-serif"&gt;Client&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2082 size=2&gt;项目启动。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2083 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2084 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2085 size=2&gt;&lt;FONT id=x5eb2086 face="Verdana, sans-serif"&gt;With this done, you should now be able to test. We are going to need both the client and the service host running to use the application, so right-click the solution and select Properties. Select Multiple startup projects and then set the Hosts project to start first followed by the Client project. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2087 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;IMG id=x5eb2088 height=452 src="http://docs.google.com/File?id=dggdkn6_240dhm84zp4_b" width=725 align=bottom border=0 name=bb960413&gt;&lt;/P&gt; &lt;P id=x5eb2089 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2090 size=2&gt;现在你应该能够浏览&lt;/FONT&gt;&lt;FONT id=x5eb2091 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2092 size=2&gt;&lt;FONT id=x5eb2093 size=2&gt;People&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2094 size=2&gt;列表，编辑数据并保存到服务。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2095 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2096 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2097 size=2&gt;&lt;FONT id=x5eb2098 face="Verdana, sans-serif"&gt;You should now be able browse through the list of people (Hobbits actually), edit their data and save it back to the service.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;H2 class=western id=x5eb2099 style="BACKGROUND: #ffffff; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2100 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2101 size=2&gt;只读属性&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt; &lt;H2 class=western id=x5eb2102 style="BACKGROUND: #ffffff; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2103 size=2&gt;&lt;FONT id=x5eb2104 size=2&gt;Read-Only Properties&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt; &lt;P id=x5eb2105 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2106 size=2&gt;你可能已经注意到了我们程序中的小问题，在测试的时候，我们可以编辑&lt;/FONT&gt;&lt;FONT id=x5eb2107 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2108 size=2&gt;&lt;FONT id=x5eb2109 size=2&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2110 size=2&gt;对象的&lt;/FONT&gt;&lt;FONT id=x5eb2111 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2112 size=2&gt;&lt;FONT id=x5eb2113 size=2&gt;ID&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2114 size=2&gt;属性。这可不是什么好事，由于我们的服务使用属性来识别&lt;/FONT&gt;&lt;FONT id=x5eb2115 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2116 size=2&gt;&lt;FONT id=x5eb2117 size=2&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2118 size=2&gt;对象。如果你编辑&lt;/FONT&gt;&lt;FONT id=x5eb2119 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2120 size=2&gt;&lt;FONT id=x5eb2121 size=2&gt;ID&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2122 size=2&gt;，并提交更改，结果可能被忽略或者更糟，你可能更改错误的&lt;/FONT&gt;&lt;FONT id=x5eb2123 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2124 size=2&gt;&lt;FONT id=x5eb2125 size=2&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2126 size=2&gt;对象的数据。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2127 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2128 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2129 size=2&gt;&lt;FONT id=x5eb2130 face="Verdana, sans-serif"&gt;You may have noticed a small problem with our application while testing it: we can edit the &lt;/FONT&gt;&lt;FONT id=x5eb2131 face="Lucida Console, monospace"&gt;Id&lt;/FONT&gt;&lt;FONT id=x5eb2132 face="Verdana, sans-serif"&gt; property of the &lt;/FONT&gt;&lt;FONT id=x5eb2133 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb2134 face="Verdana, sans-serif"&gt; object. This is not a good idea, since we are using the property to identify the &lt;/FONT&gt;&lt;FONT id=x5eb2135 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb2136 face="Verdana, sans-serif"&gt; object in the service. If you edit the &lt;/FONT&gt;&lt;FONT id=x5eb2137 face="Lucida Console, monospace"&gt;Id&lt;/FONT&gt;&lt;FONT id=x5eb2138 face="Verdana, sans-serif"&gt;, your changes may be ignored or, worse yet, you may change the data for the wrong person.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2139 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2140 size=2&gt;要解决这个问题，定位到&lt;/FONT&gt;&lt;FONT id=x5eb2141 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2142 size=2&gt;&lt;FONT id=x5eb2143 size=2&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2144 size=2&gt;类并设置&lt;/FONT&gt;&lt;FONT id=x5eb2145 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2146 size=2&gt;&lt;FONT id=x5eb2147 size=2&gt;ID&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2148 size=2&gt;属性为只读。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2149 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2150 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2151 size=2&gt;&lt;FONT id=x5eb2152 face="Verdana, sans-serif"&gt;To address this problem, go to the &lt;/FONT&gt;&lt;FONT id=x5eb2153 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb2154 face="Verdana, sans-serif"&gt; class and make the &lt;/FONT&gt;&lt;FONT id=x5eb2155 face="Lucida Console, monospace"&gt;Id&lt;/FONT&gt;&lt;FONT id=x5eb2156 face="Verdana, sans-serif"&gt; property read-only.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2157 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2158 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2159 size=2&gt;&lt;FONT id=x5eb2160 size=2&gt;&amp;lt;DataMember()&amp;gt; _&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2161 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2162 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2163 size=2&gt;&lt;FONT id=x5eb2164 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb2165 color=#0000ff&gt;ReadOnly&lt;/FONT&gt; &lt;FONT id=x5eb2166 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;FONT id=x5eb2167 size=2&gt; Id() &lt;/FONT&gt;&lt;FONT id=x5eb2168 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb2169 color=#0000ff&gt;Integer&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2170 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2171 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2172 size=2&gt;&lt;FONT id=x5eb2173 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2174 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2175 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2176 size=2&gt;&lt;FONT id=x5eb2177 color=#0000ff&gt;Return&lt;/FONT&gt;&lt;FONT id=x5eb2178 size=2&gt; _id&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2179 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2180 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2181 size=2&gt;&lt;FONT id=x5eb2182 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2183 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2184 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2185 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2186 size=2&gt;&lt;FONT id=x5eb2187 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2188 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2189 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2190 size=2&gt;清理解决方案，并右键单击&lt;/FONT&gt;&lt;FONT id=x5eb2191 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2192 size=2&gt;&lt;FONT id=x5eb2193 size=2&gt;Hosts&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2194 size=2&gt;项目，选择调试&lt;/FONT&gt;&lt;FONT id=x5eb2195 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2196 size=2&gt;&lt;FONT id=x5eb2197 size=2&gt;-&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2198 size=2&gt;启动新的实例。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2199 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2200 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2201 size=2&gt;&lt;FONT id=x5eb2202 face="Verdana, sans-serif"&gt;Get a clean build on the solution, and then right-click the Hosts project and select Debug &amp;gt; Start new instance.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2203 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;IMG id=x5eb2204 height=245 src="http://docs.google.com/File?id=dggdkn6_241djfvv3fn_b" width=421 align=bottom border=0 name=bb960413&gt;&lt;/P&gt; &lt;P id=x5eb2205 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2206 size=2&gt;噢～～！它没有工作。就像&lt;/FONT&gt;&lt;FONT id=x5eb2207 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2208 size=2&gt;&lt;FONT id=x5eb2209 size=2&gt;ASMX Web Services&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2210 size=2&gt;，只有可以读写的实体才可以被序列话。有几种方式可以解决这个问题，我将描述其中的一种。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2211 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2212 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2213 size=2&gt;&lt;FONT id=x5eb2214 face="Verdana, sans-serif"&gt;Arggghhh!! This won’t work. Just like ASMX Web Services, only entities that can be read from and written to can be serialized. There are several possible solutions for this issue. I will describe one of them.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;H2 class=western id=x5eb2215 style="BACKGROUND: #ffffff; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2216 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2217 size=2&gt;解决方法&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt; &lt;H2 class=western id=x5eb2218 style="BACKGROUND: #ffffff; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2219 size=2&gt;&lt;FONT id=x5eb2220 size=2&gt;One Solution&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt; &lt;P id=x5eb2221 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2222 size=2&gt;自从设置只读属性后，将不能序列化，我们将更改&lt;/FONT&gt;&lt;FONT id=x5eb2223 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2224 size=2&gt;&lt;FONT id=x5eb2225 face="Verdana, sans-serif"&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2226 size=2&gt;类，让字段包含&lt;/FONT&gt;&lt;FONT id=x5eb2227 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2228 size=2&gt;&lt;FONT id=x5eb2229 face="Verdana, sans-serif"&gt;data contract &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2230 size=2&gt;来替换原来的属性。开打&lt;/FONT&gt;&lt;FONT id=x5eb2231 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2232 size=2&gt;&lt;FONT id=x5eb2233 face="Verdana, sans-serif"&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2234 size=2&gt;类并移除&lt;/FONT&gt;&lt;FONT id=x5eb2235 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2236 size=2&gt;&lt;FONT id=x5eb2237 face="Verdana, sans-serif"&gt;DataMember attribute &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2238 size=2&gt;从&lt;/FONT&gt;&lt;FONT id=x5eb2239 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2240 size=2&gt;&lt;FONT id=x5eb2241 face="Verdana, sans-serif"&gt;3&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2242 size=2&gt;个属性中，并切添加它到&lt;/FONT&gt;&lt;FONT id=x5eb2243 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2244 size=2&gt;&lt;FONT id=x5eb2245 face="Verdana, sans-serif"&gt;3&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2246 size=2&gt;个字段声明上（如 &lt;/FONT&gt;&lt;FONT id=x5eb2247 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2248 size=2&gt;&lt;FONT id=x5eb2249 face="Lucida Console, monospace"&gt;_id&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2250 size=2&gt;， &lt;/FONT&gt;&lt;FONT id=x5eb2251 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2252 size=2&gt;&lt;FONT id=x5eb2253 face="Lucida Console, monospace"&gt;_name&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2254 size=2&gt;，和&lt;/FONT&gt;&lt;FONT id=x5eb2255 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2256 size=2&gt;&lt;FONT id=x5eb2257 face="Lucida Console, monospace"&gt;_birthDate&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2258 size=2&gt;）&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2259 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2260 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2261 size=2&gt;&lt;FONT id=x5eb2262 face="Verdana, sans-serif"&gt;Since read-only properties cannot be serialized, we are going to change the &lt;/FONT&gt;&lt;FONT id=x5eb2263 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb2264 face="Verdana, sans-serif"&gt; class so that the fields are included in the data contract instead of the properties. Open the &lt;/FONT&gt;&lt;FONT id=x5eb2265 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb2266 face="Verdana, sans-serif"&gt; class and remove the &lt;/FONT&gt;&lt;FONT id=x5eb2267 face="Lucida Console, monospace"&gt;DataMember&lt;/FONT&gt;&lt;FONT id=x5eb2268 face="Verdana, sans-serif"&gt; attribute from the three properties, and then add it to the declarations of the three fields (i.e. &lt;/FONT&gt;&lt;FONT id=x5eb2269 face="Lucida Console, monospace"&gt;_id&lt;/FONT&gt;&lt;FONT id=x5eb2270 face="Verdana, sans-serif"&gt;, &lt;/FONT&gt;&lt;FONT id=x5eb2271 face="Lucida Console, monospace"&gt;_name&lt;/FONT&gt;&lt;FONT id=x5eb2272 face="Verdana, sans-serif"&gt;, and &lt;/FONT&gt;&lt;FONT id=x5eb2273 face="Lucida Console, monospace"&gt;_birthDate&lt;/FONT&gt;&lt;FONT id=x5eb2274 face="Verdana, sans-serif"&gt;).&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2275 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2276 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2277 size=2&gt;&lt;FONT id=x5eb2278 color=#0000ff&gt;Imports&lt;/FONT&gt;&lt;FONT id=x5eb2279 size=2&gt; System.Runtime.Serialization&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2280 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb2281&gt;&lt;/P&gt; &lt;P id=x5eb2282 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2283 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2284 size=2&gt;&lt;FONT id=x5eb2285 size=2&gt;&amp;lt;DataContract()&amp;gt; _&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2286 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2287 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2288 size=2&gt;&lt;FONT id=x5eb2289 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb2290 color=#0000ff&gt;Class&lt;/FONT&gt;&lt;FONT id=x5eb2291 size=2&gt; Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2292 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb2293&gt;&lt;/P&gt; &lt;P id=x5eb2294 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2295 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2296 size=2&gt;&lt;FONT id=x5eb2297 size=2&gt;&amp;lt;DataMember()&amp;gt; &lt;/FONT&gt;&lt;FONT id=x5eb2298 color=#0000ff&gt;Private&lt;/FONT&gt;&lt;FONT id=x5eb2299 size=2&gt; _id &lt;/FONT&gt;&lt;FONT id=x5eb2300 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb2301 color=#0000ff&gt;Integer&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2302 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2303 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2304 size=2&gt;&lt;FONT id=x5eb2305 size=2&gt;&amp;lt;DataMember()&amp;gt; &lt;/FONT&gt;&lt;FONT id=x5eb2306 color=#0000ff&gt;Private&lt;/FONT&gt;&lt;FONT id=x5eb2307 size=2&gt; _name &lt;/FONT&gt;&lt;FONT id=x5eb2308 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb2309 color=#0000ff&gt;String&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2310 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2311 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2312 size=2&gt;&lt;FONT id=x5eb2313 size=2&gt;&amp;lt;DataMember()&amp;gt; &lt;/FONT&gt;&lt;FONT id=x5eb2314 color=#0000ff&gt;Private&lt;/FONT&gt;&lt;FONT id=x5eb2315 size=2&gt; _birthDate &lt;/FONT&gt;&lt;FONT id=x5eb2316 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb2317 size=2&gt; DateTime&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2318 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb2319&gt;&lt;/P&gt; &lt;P id=x5eb2320 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2321 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2322 size=2&gt;&lt;FONT id=x5eb2323 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb2324 color=#0000ff&gt;Sub&lt;/FONT&gt; &lt;FONT id=x5eb2325 color=#0000ff&gt;New&lt;/FONT&gt;&lt;FONT id=x5eb2326 size=2&gt;(&lt;/FONT&gt;&lt;FONT id=x5eb2327 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb2328 size=2&gt; id &lt;/FONT&gt;&lt;FONT id=x5eb2329 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb2330 color=#0000ff&gt;Integer&lt;/FONT&gt;&lt;FONT id=x5eb2331 size=2&gt;, &lt;/FONT&gt;&lt;FONT id=x5eb2332 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb2333 size=2&gt; name &lt;/FONT&gt;&lt;FONT id=x5eb2334 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb2335 color=#0000ff&gt;String&lt;/FONT&gt;&lt;FONT id=x5eb2336 size=2&gt;, &lt;/FONT&gt;&lt;FONT id=x5eb2337 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb2338 size=2&gt; birthDate &lt;/FONT&gt;&lt;FONT id=x5eb2339 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb2340 size=2&gt; DateTime)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2341 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2342 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2343 size=2&gt;&lt;FONT id=x5eb2344 size=2&gt;_id = id&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2345 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2346 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2347 size=2&gt;&lt;FONT id=x5eb2348 size=2&gt;_name = name&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2349 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2350 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2351 size=2&gt;&lt;FONT id=x5eb2352 size=2&gt;_birthDate = birthDate&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2353 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2354 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2355 size=2&gt;&lt;FONT id=x5eb2356 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2357 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2358 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb2359&gt;&lt;/P&gt; &lt;P id=x5eb2360 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2361 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2362 size=2&gt;&lt;FONT id=x5eb2363 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb2364 color=#0000ff&gt;ReadOnly&lt;/FONT&gt; &lt;FONT id=x5eb2365 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;FONT id=x5eb2366 size=2&gt; Id() &lt;/FONT&gt;&lt;FONT id=x5eb2367 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb2368 color=#0000ff&gt;Integer&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2369 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2370 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2371 size=2&gt;&lt;FONT id=x5eb2372 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2373 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2374 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2375 size=2&gt;&lt;FONT id=x5eb2376 color=#0000ff&gt;Return&lt;/FONT&gt;&lt;FONT id=x5eb2377 size=2&gt; _id&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2378 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2379 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2380 size=2&gt;&lt;FONT id=x5eb2381 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2382 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2383 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2384 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2385 size=2&gt;&lt;FONT id=x5eb2386 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2387 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2388 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb2389&gt;&lt;/P&gt; &lt;P id=x5eb2390 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2391 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2392 size=2&gt;&lt;FONT id=x5eb2393 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb2394 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;FONT id=x5eb2395 size=2&gt; Name() &lt;/FONT&gt;&lt;FONT id=x5eb2396 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb2397 color=#0000ff&gt;String&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2398 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2399 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2400 size=2&gt;&lt;FONT id=x5eb2401 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2402 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2403 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2404 size=2&gt;&lt;FONT id=x5eb2405 color=#0000ff&gt;Return&lt;/FONT&gt;&lt;FONT id=x5eb2406 size=2&gt; _name&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2407 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2408 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2409 size=2&gt;&lt;FONT id=x5eb2410 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2411 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2412 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2413 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2414 size=2&gt;&lt;FONT id=x5eb2415 color=#0000ff&gt;Set&lt;/FONT&gt;&lt;FONT id=x5eb2416 size=2&gt;(&lt;/FONT&gt;&lt;FONT id=x5eb2417 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb2418 size=2&gt; value &lt;/FONT&gt;&lt;FONT id=x5eb2419 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb2420 color=#0000ff&gt;String&lt;/FONT&gt;&lt;FONT id=x5eb2421 size=2&gt;)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2422 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2423 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2424 size=2&gt;&lt;FONT id=x5eb2425 size=2&gt;_name = value&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2426 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2427 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2428 size=2&gt;&lt;FONT id=x5eb2429 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2430 color=#0000ff&gt;Set&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2431 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2432 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2433 size=2&gt;&lt;FONT id=x5eb2434 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2435 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2436 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb2437&gt;&lt;/P&gt; &lt;P id=x5eb2438 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2439 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2440 size=2&gt;&lt;FONT id=x5eb2441 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb2442 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;FONT id=x5eb2443 size=2&gt; BirthDate() &lt;/FONT&gt;&lt;FONT id=x5eb2444 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb2445 size=2&gt; DateTime&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2446 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2447 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2448 size=2&gt;&lt;FONT id=x5eb2449 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2450 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2451 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2452 size=2&gt;&lt;FONT id=x5eb2453 color=#0000ff&gt;Return&lt;/FONT&gt;&lt;FONT id=x5eb2454 size=2&gt; _birthDate&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2455 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2456 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2457 size=2&gt;&lt;FONT id=x5eb2458 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2459 color=#0000ff&gt;Get&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2460 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2461 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2462 size=2&gt;&lt;FONT id=x5eb2463 color=#0000ff&gt;Set&lt;/FONT&gt;&lt;FONT id=x5eb2464 size=2&gt;(&lt;/FONT&gt;&lt;FONT id=x5eb2465 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb2466 size=2&gt; value &lt;/FONT&gt;&lt;FONT id=x5eb2467 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb2468 size=2&gt; DateTime)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2469 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2470 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2471 size=2&gt;&lt;FONT id=x5eb2472 size=2&gt;_birthDate = value&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2473 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2474 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2475 size=2&gt;&lt;FONT id=x5eb2476 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2477 color=#0000ff&gt;Set&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2478 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2479 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2480 size=2&gt;&lt;FONT id=x5eb2481 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2482 color=#0000ff&gt;Property&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2483 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb2484&gt;&lt;/P&gt; &lt;P id=x5eb2485 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2486 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2487 size=2&gt;&lt;FONT id=x5eb2488 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb2489 color=#0000ff&gt;Overrides&lt;/FONT&gt; &lt;FONT id=x5eb2490 color=#0000ff&gt;Function&lt;/FONT&gt;&lt;FONT id=x5eb2491 size=2&gt; ToString() &lt;/FONT&gt;&lt;FONT id=x5eb2492 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb2493 color=#0000ff&gt;String&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2494 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2495 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2496 size=2&gt;&lt;FONT id=x5eb2497 color=#0000ff&gt;Return&lt;/FONT&gt; &lt;FONT id=x5eb2498 color=#0000ff&gt;String&lt;/FONT&gt;&lt;FONT id=x5eb2499 size=2&gt;.Format(&lt;/FONT&gt;&lt;FONT id=x5eb2500 color=#a31515&gt;"{0} [Id:{1}; Birth Date: {2}]"&lt;/FONT&gt;&lt;FONT id=x5eb2501 size=2&gt;, _name, _id, _birthDate)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2502 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2503 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2504 size=2&gt;&lt;FONT id=x5eb2505 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2506 color=#0000ff&gt;Function&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2507 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb2508&gt;&lt;/P&gt; &lt;P id=x5eb2509 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2510 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2511 size=2&gt;&lt;FONT id=x5eb2512 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2513 color=#0000ff&gt;Class&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2514 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2515 size=2&gt;既然我们更改了&lt;/FONT&gt;&lt;FONT id=x5eb2516 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2517 size=2&gt;&lt;FONT id=x5eb2518 face="Verdana, sans-serif"&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2519 size=2&gt;对象的序列化的样子，所以客户端的服务代理需要修改。你应该能够通过右键单击&lt;/FONT&gt;&lt;FONT id=x5eb2520 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2521 size=2&gt;&lt;FONT id=x5eb2522 face="Verdana, sans-serif"&gt;PersonServiceProxy.map &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2523 size=2&gt;并选择更新服务引用来完成这个。不过我这建立是有问题的，代替的，右键单击服务引用文件夹，并选择删除。对&lt;/FONT&gt;&lt;FONT id=x5eb2524 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2525 size=2&gt;&lt;FONT id=x5eb2526 face="Verdana, sans-serif"&gt;App.config&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2527 size=2&gt;文件也做用羊的事。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2528 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2529 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2530 size=2&gt;&lt;FONT id=x5eb2531 face="Verdana, sans-serif"&gt;Since we’ve changed how the &lt;/FONT&gt;&lt;FONT id=x5eb2532 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb2533 face="Verdana, sans-serif"&gt; object will look when it is serialized, the service proxy on the client needs to be modified. While you should be able to right-click PersonServiceProxy.map and select Update service reference to do this, I have found doing so problematic. Instead, right-click the Service References folder and select Delete. Do the same for the app.config file.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2534 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2535 size=2&gt;清理&lt;/FONT&gt;&lt;FONT id=x5eb2536 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2537 size=2&gt;&lt;FONT id=x5eb2538 face="Verdana, sans-serif"&gt;Hosts&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2539 size=2&gt;项目，并右键单击选择调试&lt;/FONT&gt;&lt;FONT id=x5eb2540 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2541 size=2&gt;&lt;FONT id=x5eb2542 face="Verdana, sans-serif"&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2543 size=2&gt;启动新的实例。当服务&lt;/FONT&gt;&lt;FONT id=x5eb2544 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2545 size=2&gt;&lt;FONT id=x5eb2546 face="Verdana, sans-serif"&gt;Host&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2547 size=2&gt;运行的时候，右键单击并选择调试&lt;/FONT&gt;&lt;FONT id=x5eb2548 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2549 size=2&gt;&lt;FONT id=x5eb2550 face="Verdana, sans-serif"&gt;-&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2551 size=2&gt;穷调试。当服务宿主运行后，右键单击&lt;/FONT&gt;&lt;FONT id=x5eb2552 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2553 size=2&gt;&lt;FONT id=x5eb2554 face="Verdana, sans-serif"&gt;Client&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2555 size=2&gt;项目，并选择添加服务引用。在服务引用中输入服务地的&lt;/FONT&gt;&lt;FONT id=x5eb2556 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2557 size=2&gt;&lt;FONT id=x5eb2558 face="Verdana, sans-serif"&gt;URL &lt;/FONT&gt;&lt;FONT id=x5eb2559 color=#0033cc&gt;&lt;SPAN id=x5eb2560 style="TEXT-DECORATION: none"&gt;&lt;A id=x5eb2561 href="http://localhost:8081/PersonService"&gt;&lt;FONT id=x5eb2562 face="Verdana, sans-serif"&gt;http://localhost:8081/PersonService&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2563 size=2&gt;，并将&lt;/FONT&gt;&lt;FONT id=x5eb2564 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2565 size=2&gt;&lt;FONT id=x5eb2566 face="Lucida Console, monospace"&gt;PersonServiceProxy&lt;/FONT&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2567 size=2&gt;添加到服务引用名著中，之后单击确定，一旦将服务引用添加到&lt;/FONT&gt;&lt;FONT id=x5eb2568 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2569 size=2&gt;&lt;FONT id=x5eb2570 face="Verdana, sans-serif"&gt;Client&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2571 size=2&gt;，就可以关闭服务宿主的控制台窗口了。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2572 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2573 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2574 size=2&gt;&lt;FONT id=x5eb2575 face="Verdana, sans-serif"&gt;Get a clean build of the Hosts project, and then right-click and select Debug &amp;gt; Start new instance. With the service host running, right-click the client project and select Add service reference. Enter “http://localhost:8081/PersonService” for the Service URI and &lt;/FONT&gt;&lt;FONT id=x5eb2576 face="Lucida Console, monospace"&gt;PersonServiceProxy&lt;/FONT&gt;&lt;FONT id=x5eb2577 face="Verdana, sans-serif"&gt; for the Service reference name, and then click OK. Once the service reference has been added to the client, close the service host console window.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2578 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2579 size=2&gt;现在还没有解决我们的问题。客户端版本的&lt;/FONT&gt;&lt;FONT id=x5eb2580 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2581 size=2&gt;&lt;FONT id=x5eb2582 size=2&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2583 size=2&gt;的&lt;/FONT&gt;&lt;FONT id=x5eb2584 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2585 size=2&gt;&lt;FONT id=x5eb2586 size=2&gt;_ID&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2587 size=2&gt;属性还是可读写的。我们需要使用真正的&lt;/FONT&gt;&lt;FONT id=x5eb2588 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2589 size=2&gt;&lt;FONT id=x5eb2590 size=2&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2591 size=2&gt;对象代替客户端代理生成的版本。右键单击&lt;/FONT&gt;&lt;FONT id=x5eb2592 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2593 size=2&gt;&lt;FONT id=x5eb2594 size=2&gt;Client&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2595 size=2&gt;项目并选择添加引用，然后选择项目选项卡，选择&lt;/FONT&gt;&lt;FONT id=x5eb2596 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2597 size=2&gt;&lt;FONT id=x5eb2598 size=2&gt;Business&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2599 size=2&gt;，单击确定。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2600 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2601 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2602 size=2&gt;&lt;FONT id=x5eb2603 face="Verdana, sans-serif"&gt;This hasn’t really solved our problem. The &lt;/FONT&gt;&lt;FONT id=x5eb2604 face="Lucida Console, monospace"&gt;_id&lt;/FONT&gt;&lt;FONT id=x5eb2605 face="Verdana, sans-serif"&gt; property of the client-side version of &lt;/FONT&gt;&lt;FONT id=x5eb2606 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb2607 face="Verdana, sans-serif"&gt; is still read/write. What we need to do to address this issue is to use the real &lt;/FONT&gt;&lt;FONT id=x5eb2608 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb2609 face="Verdana, sans-serif"&gt; object on the client side instead of the version in the proxy. Right-click the &lt;/FONT&gt;&lt;FONT id=x5eb2610 face="Lucida Console, monospace"&gt;Client&lt;/FONT&gt;&lt;FONT id=x5eb2611 face="Verdana, sans-serif"&gt; project and select Add reference, then from the Projects tab, select Business, and click OK.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2612 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2613 size=2&gt;接下来将是冒险的部分，我们需要手动修改客户端代理类，即使在违背在代理类顶端注释中的警告。这个问题是因为，如果我们重新生成代理类，我们所作的所有修改将会丢失。所以，你需要记住在每次重新生成代理类的时候再次修改代码。值得欣慰的是，在&lt;/FONT&gt;&lt;FONT id=x5eb2614 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2615 size=2&gt;&lt;FONT id=x5eb2616 face="Verdana, sans-serif"&gt;VS2008&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2617 size=2&gt;添加服务引用对话框中将解决这个问题。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2618 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2619 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2620 size=2&gt;&lt;FONT id=x5eb2621 face="Verdana, sans-serif"&gt;Here comes the dodgy part. We need to manually edit the client-side proxy—even though the comment at the top of the proxy warns you against doing so. This is a problem because, if we need to regenerate our proxy, all of the changes we are about to make will be blown away. So, you will need to remember to make the edits every time you regenerate the proxy. If it’s any comfort, the Add Service Reference dialog in Visual Studio 2008 will address this issue.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2622 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2623 size=2&gt;在代码编辑器中打开 &lt;/FONT&gt;&lt;FONT id=x5eb2624 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2625 size=2&gt;&lt;FONT id=x5eb2626 face="Verdana, sans-serif"&gt;PersonServiceProxy.vb &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2627 size=2&gt;并移除&lt;/FONT&gt;&lt;FONT id=x5eb2628 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2629 size=2&gt;&lt;FONT id=x5eb2630 face="Verdana, sans-serif"&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2631 size=2&gt;类。然后替换所有出现的&lt;/FONT&gt;&lt;FONT id=x5eb2632 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2633 size=2&gt;&lt;FONT id=x5eb2634 face="Lucida Console, monospace"&gt;PersonServiceProxy.Person&lt;/FONT&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2635 size=2&gt;为 &lt;/FONT&gt;&lt;FONT id=x5eb2636 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2637 size=2&gt;&lt;FONT id=x5eb2638 face="Lucida Console, monospace"&gt;Business.Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2639 size=2&gt;。现在，在代码编辑器中打开&lt;/FONT&gt;&lt;FONT id=x5eb2640 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2641 size=2&gt;&lt;FONT id=x5eb2642 face="Verdana, sans-serif"&gt;Form1.vb&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2643 size=2&gt;并替换&lt;/FONT&gt;&lt;FONT id=x5eb2644 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2645 size=2&gt;&lt;FONT id=x5eb2646 face="Lucida Console, monospace"&gt;PersonServiceProxy.Person&lt;/FONT&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2647 size=2&gt;为 &lt;/FONT&gt;&lt;FONT id=x5eb2648 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2649 size=2&gt;&lt;FONT id=x5eb2650 face="Lucida Console, monospace"&gt;Business.Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2651 size=2&gt;。最后，在&lt;/FONT&gt;&lt;FONT id=x5eb2652 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2653 size=2&gt;&lt;FONT id=x5eb2654 face="Lucida Console, monospace"&gt;Save&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2655 size=2&gt;按钮单击事件中，移除设置&lt;/FONT&gt;&lt;FONT id=x5eb2656 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2657 size=2&gt;&lt;FONT id=x5eb2658 face="Lucida Console, monospace"&gt;ID&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2659 size=2&gt;属性的代码。由于&lt;/FONT&gt;&lt;FONT id=x5eb2660 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2661 size=2&gt;&lt;FONT id=x5eb2662 face="Lucida Console, monospace"&gt;ID&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2663 size=2&gt;不能更改，你也可以将显示文本框设置成只读。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2664 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2665 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2666 size=2&gt;&lt;FONT id=x5eb2667 face="Verdana, sans-serif"&gt;Open PersonServiceProxy.vb in the code editor and remove the &lt;/FONT&gt;&lt;FONT id=x5eb2668 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb2669 face="Verdana, sans-serif"&gt; class from it. Then replace &lt;/FONT&gt;&lt;FONT id=x5eb2670 face="Lucida Console, monospace"&gt;PersonServiceProxy.Person&lt;/FONT&gt;&lt;FONT id=x5eb2671 face="Verdana, sans-serif"&gt; with &lt;/FONT&gt;&lt;FONT id=x5eb2672 face="Lucida Console, monospace"&gt;Business.Person&lt;/FONT&gt;&lt;FONT id=x5eb2673 face="Verdana, sans-serif"&gt; everywhere it appears. Now open Form1.vb in the code editor and replace &lt;/FONT&gt;&lt;FONT id=x5eb2674 face="Lucida Console, monospace"&gt;PersonServiceProxy.Person&lt;/FONT&gt;&lt;FONT id=x5eb2675 face="Verdana, sans-serif"&gt; with &lt;/FONT&gt;&lt;FONT id=x5eb2676 face="Lucida Console, monospace"&gt;Business.Person&lt;/FONT&gt;&lt;FONT id=x5eb2677 face="Verdana, sans-serif"&gt; everywhere it appears. Finally, in the Save button’s &lt;/FONT&gt;&lt;FONT id=x5eb2678 face="Lucida Console, monospace"&gt;Click&lt;/FONT&gt;&lt;FONT id=x5eb2679 face="Verdana, sans-serif"&gt; event hander, remove the line of code that sets the &lt;/FONT&gt;&lt;FONT id=x5eb2680 face="Lucida Console, monospace"&gt;Id&lt;/FONT&gt;&lt;FONT id=x5eb2681 face="Verdana, sans-serif"&gt; property. Since the &lt;/FONT&gt;&lt;FONT id=x5eb2682 face="Lucida Console, monospace"&gt;Id&lt;/FONT&gt;&lt;FONT id=x5eb2683 face="Verdana, sans-serif"&gt; cannot be changed, you may also want to make the text box that displays it read-only.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2684 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2685 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2686 size=2&gt;&lt;FONT id=x5eb2687 color=#0000ff&gt;Imports&lt;/FONT&gt;&lt;FONT id=x5eb2688 size=2&gt; System.ComponentModel&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2689 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb2690&gt;&lt;/P&gt; &lt;P id=x5eb2691 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2692 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2693 size=2&gt;&lt;FONT id=x5eb2694 color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT id=x5eb2695 color=#0000ff&gt;Class&lt;/FONT&gt;&lt;FONT id=x5eb2696 size=2&gt; Form1&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2697 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb2698&gt;&lt;/P&gt; &lt;P id=x5eb2699 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2700 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2701 size=2&gt;&lt;FONT id=x5eb2702 color=#0000ff&gt;Private&lt;/FONT&gt;&lt;FONT id=x5eb2703 size=2&gt; _person &lt;/FONT&gt;&lt;FONT id=x5eb2704 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb2705 size=2&gt; Business.Person = &lt;/FONT&gt;&lt;FONT id=x5eb2706 color=#0000ff&gt;Nothing&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2707 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb2708&gt;&lt;/P&gt; &lt;P id=x5eb2709 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2710 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2711 size=2&gt;&lt;FONT id=x5eb2712 color=#0000ff&gt;Private&lt;/FONT&gt; &lt;FONT id=x5eb2713 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;FONT id=x5eb2714 size=2&gt; Form1_Load(&lt;/FONT&gt;&lt;FONT id=x5eb2715 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb2716 size=2&gt; sender &lt;/FONT&gt;&lt;FONT id=x5eb2717 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb2718 size=2&gt; System.Object, &lt;/FONT&gt;&lt;FONT id=x5eb2719 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb2720 size=2&gt; e &lt;/FONT&gt;&lt;FONT id=x5eb2721 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb2722 size=2&gt; System.EventArgs) &lt;/FONT&gt;&lt;FONT id=x5eb2723 color=#0000ff&gt;Handles&lt;/FONT&gt; &lt;FONT id=x5eb2724 color=#0000ff&gt;MyBase&lt;/FONT&gt;&lt;FONT id=x5eb2725 size=2&gt;.Load&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2726 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2727 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2728 size=2&gt;&lt;FONT id=x5eb2729 size=2&gt;LoadListBox()&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2730 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2731 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2732 size=2&gt;&lt;FONT id=x5eb2733 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2734 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2735 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb2736&gt;&lt;/P&gt; &lt;P id=x5eb2737 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2738 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2739 size=2&gt;&lt;FONT id=x5eb2740 color=#0000ff&gt;Private&lt;/FONT&gt; &lt;FONT id=x5eb2741 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;FONT id=x5eb2742 size=2&gt; LoadListBox()&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2743 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2744 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2745 size=2&gt;&lt;FONT id=x5eb2746 color=#0000ff&gt;Using&lt;/FONT&gt;&lt;FONT id=x5eb2747 size=2&gt; ws &lt;/FONT&gt;&lt;FONT id=x5eb2748 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb2749 color=#0000ff&gt;New&lt;/FONT&gt;&lt;FONT id=x5eb2750 size=2&gt; PersonServiceProxy.PersonServiceClient&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2751 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2752 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2753 size=2&gt;&lt;FONT id=x5eb2754 size=2&gt;PeopleListBox.DataSource = ws.GetPeople()&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2755 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2756 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2757 size=2&gt;&lt;FONT id=x5eb2758 size=2&gt;PeopleListBox.DisplayMember = &lt;/FONT&gt;&lt;FONT id=x5eb2759 color=#a31515&gt;"Name"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2760 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2761 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2762 size=2&gt;&lt;FONT id=x5eb2763 size=2&gt;PeopleListBox.ValueMember = &lt;/FONT&gt;&lt;FONT id=x5eb2764 color=#a31515&gt;"Id"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2765 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2766 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2767 size=2&gt;&lt;FONT id=x5eb2768 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2769 color=#0000ff&gt;Using&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2770 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb2771&gt;&lt;/P&gt; &lt;P id=x5eb2772 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2773 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2774 size=2&gt;&lt;FONT id=x5eb2775 size=2&gt;PeopleListBox_SelectedIndexChanged(&lt;/FONT&gt;&lt;FONT id=x5eb2776 color=#0000ff&gt;Me&lt;/FONT&gt;&lt;FONT id=x5eb2777 size=2&gt;, EventArgs.Empty)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2778 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2779 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2780 size=2&gt;&lt;FONT id=x5eb2781 color=#0000ff&gt;AddHandler&lt;/FONT&gt;&lt;FONT id=x5eb2782 size=2&gt; PeopleListBox.SelectedIndexChanged, &lt;/FONT&gt;&lt;FONT id=x5eb2783 color=#0000ff&gt;AddressOf&lt;/FONT&gt;&lt;FONT id=x5eb2784 size=2&gt; PeopleListBox_SelectedIndexChanged&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2785 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2786 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2787 size=2&gt;&lt;FONT id=x5eb2788 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2789 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2790 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb2791&gt;&lt;/P&gt; &lt;P id=x5eb2792 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2793 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2794 size=2&gt;&lt;FONT id=x5eb2795 color=#0000ff&gt;Private&lt;/FONT&gt; &lt;FONT id=x5eb2796 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;FONT id=x5eb2797 size=2&gt; PeopleListBox_SelectedIndexChanged(&lt;/FONT&gt;&lt;FONT id=x5eb2798 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb2799 size=2&gt; sender &lt;/FONT&gt;&lt;FONT id=x5eb2800 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb2801 size=2&gt; System.Object, &lt;/FONT&gt;&lt;FONT id=x5eb2802 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb2803 size=2&gt; e &lt;/FONT&gt;&lt;FONT id=x5eb2804 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb2805 size=2&gt; System.EventArgs)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2806 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2807 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2808 size=2&gt;&lt;FONT id=x5eb2809 color=#0000ff&gt;Using&lt;/FONT&gt;&lt;FONT id=x5eb2810 size=2&gt; ws &lt;/FONT&gt;&lt;FONT id=x5eb2811 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb2812 color=#0000ff&gt;New&lt;/FONT&gt;&lt;FONT id=x5eb2813 size=2&gt; PersonServiceProxy.PersonServiceClient&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2814 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2815 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2816 size=2&gt;&lt;FONT id=x5eb2817 size=2&gt;_person = ws.GetPerson(&lt;/FONT&gt;&lt;FONT id=x5eb2818 color=#0000ff&gt;CInt&lt;/FONT&gt;&lt;FONT id=x5eb2819 size=2&gt;(PeopleListBox.SelectedValue))&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2820 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2821 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2822 size=2&gt;&lt;FONT id=x5eb2823 size=2&gt;IdTextBox.Text = _person.Id&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2824 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2825 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2826 size=2&gt;&lt;FONT id=x5eb2827 size=2&gt;NameTextBox.Text = _person.Name&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2828 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2829 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2830 size=2&gt;&lt;FONT id=x5eb2831 size=2&gt;BirthDateTextBox.Text = _person.BirthDate.ToShortDateString()&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2832 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2833 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2834 size=2&gt;&lt;FONT id=x5eb2835 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2836 color=#0000ff&gt;Using&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2837 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2838 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2839 size=2&gt;&lt;FONT id=x5eb2840 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2841 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2842 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb2843&gt;&lt;/P&gt; &lt;P id=x5eb2844 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2845 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2846 size=2&gt;&lt;FONT id=x5eb2847 color=#0000ff&gt;Private&lt;/FONT&gt; &lt;FONT id=x5eb2848 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;FONT id=x5eb2849 size=2&gt; SaveButton_Click(&lt;/FONT&gt;&lt;FONT id=x5eb2850 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb2851 size=2&gt; sender &lt;/FONT&gt;&lt;FONT id=x5eb2852 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb2853 size=2&gt; System.Object, &lt;/FONT&gt;&lt;FONT id=x5eb2854 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb2855 size=2&gt; e &lt;/FONT&gt;&lt;FONT id=x5eb2856 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb2857 size=2&gt; System.EventArgs) &lt;/FONT&gt;&lt;FONT id=x5eb2858 color=#0000ff&gt;Handles&lt;/FONT&gt;&lt;FONT id=x5eb2859 size=2&gt; SaveButton.Click&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2860 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2861 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2862 size=2&gt;&lt;FONT id=x5eb2863 size=2&gt;_person.Name = NameTextBox.Text&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2864 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2865 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2866 size=2&gt;&lt;FONT id=x5eb2867 size=2&gt;_person.BirthDate = &lt;/FONT&gt;&lt;FONT id=x5eb2868 color=#0000ff&gt;CDate&lt;/FONT&gt;&lt;FONT id=x5eb2869 size=2&gt;(BirthDateTextBox.Text)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2870 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2871 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2872 size=2&gt;&lt;FONT id=x5eb2873 color=#0000ff&gt;Using&lt;/FONT&gt;&lt;FONT id=x5eb2874 size=2&gt; ws &lt;/FONT&gt;&lt;FONT id=x5eb2875 color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT id=x5eb2876 color=#0000ff&gt;New&lt;/FONT&gt;&lt;FONT id=x5eb2877 size=2&gt; PersonServiceProxy.PersonServiceClient&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2878 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2879 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2880 size=2&gt;&lt;FONT id=x5eb2881 size=2&gt;ws.UpdatePerson(_person)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2882 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2883 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2884 size=2&gt;&lt;FONT id=x5eb2885 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2886 color=#0000ff&gt;Using&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2887 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2888 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2889 size=2&gt;&lt;FONT id=x5eb2890 size=2&gt;LoadListBox()&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2891 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2892 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2893 size=2&gt;&lt;FONT id=x5eb2894 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2895 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2896 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2897 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2898 size=2&gt;&lt;FONT id=x5eb2899 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2900 color=#0000ff&gt;Class&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2901 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2902 size=2&gt;你现在应该能够运行和测试完成的程序了。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2903 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2904 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2905 size=2&gt;&lt;FONT id=x5eb2906 size=2&gt;You should now be able to run and test the completed application.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2907 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2908 size=2&gt;在客户端使用原&lt;/FONT&gt;&lt;FONT id=x5eb2909 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2910 size=2&gt;&lt;FONT id=x5eb2911 size=2&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2912 size=2&gt;类型的另一个好处是你可以使用它的方法。为了演示这个，我们将添加一些代码来调用&lt;/FONT&gt;&lt;FONT id=x5eb2913 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2914 size=2&gt;&lt;FONT id=x5eb2915 size=2&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2916 size=2&gt;类重写的&lt;/FONT&gt;&lt;FONT id=x5eb2917 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2918 size=2&gt;&lt;FONT id=x5eb2919 size=2&gt;ToString&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2920 size=2&gt;方法。添加按钮到客户端窗体上并双击他添加事件处理。事件处理的代码将&lt;/FONT&gt;&lt;FONT id=x5eb2921 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2922 size=2&gt;&lt;FONT id=x5eb2923 size=2&gt;PeopleListBox&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2924 size=2&gt;的&lt;/FONT&gt;&lt;FONT id=x5eb2925 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2926 size=2&gt;&lt;FONT id=x5eb2927 size=2&gt;SelectItem&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2928 size=2&gt;转换成&lt;/FONT&gt;&lt;FONT id=x5eb2929 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2930 size=2&gt;&lt;FONT id=x5eb2931 size=2&gt;Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2932 size=2&gt;对象并在消息框中显示调用&lt;/FONT&gt;&lt;FONT id=x5eb2933 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2934 size=2&gt;&lt;FONT id=x5eb2935 size=2&gt;ToString&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT id=x5eb2936 size=2&gt;方法的结果。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2937 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2938 face="宋体, SimSun"&gt;&lt;FONT id=x5eb2939 size=2&gt;&lt;FONT id=x5eb2940 face="Verdana, sans-serif"&gt;Another benefit of using the real &lt;/FONT&gt;&lt;FONT id=x5eb2941 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb2942 face="Verdana, sans-serif"&gt; type on the client is that you can now make use of its methods. To demonstrate this, we will add some code to call the &lt;/FONT&gt;&lt;FONT id=x5eb2943 face="Lucida Console, monospace"&gt;ToString&lt;/FONT&gt;&lt;FONT id=x5eb2944 face="Verdana, sans-serif"&gt; method, which the &lt;/FONT&gt;&lt;FONT id=x5eb2945 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb2946 face="Verdana, sans-serif"&gt; class has overridden. Add the button to the client form and then double-click it to add an event handler. In the event handler add the code to cast the &lt;/FONT&gt;&lt;FONT id=x5eb2947 face="Lucida Console, monospace"&gt;SelectItem&lt;/FONT&gt;&lt;FONT id=x5eb2948 face="Verdana, sans-serif"&gt; from the &lt;/FONT&gt;&lt;FONT id=x5eb2949 face="Lucida Console, monospace"&gt;PeopleListBox&lt;/FONT&gt;&lt;FONT id=x5eb2950 face="Verdana, sans-serif"&gt; to a &lt;/FONT&gt;&lt;FONT id=x5eb2951 face="Lucida Console, monospace"&gt;Person&lt;/FONT&gt;&lt;FONT id=x5eb2952 face="Verdana, sans-serif"&gt; and then show the results of calling &lt;/FONT&gt;&lt;FONT id=x5eb2953 face="Lucida Console, monospace"&gt;ToString&lt;/FONT&gt;&lt;FONT id=x5eb2954 face="Verdana, sans-serif"&gt; in a message box.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2955 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2956 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2957 size=2&gt;&lt;FONT id=x5eb2958 color=#0000ff&gt;Private&lt;/FONT&gt; &lt;FONT id=x5eb2959 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;FONT id=x5eb2960 size=2&gt; ToStringButton_Click(&lt;/FONT&gt;&lt;FONT id=x5eb2961 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb2962 size=2&gt; sender &lt;/FONT&gt;&lt;FONT id=x5eb2963 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb2964 size=2&gt; System.Object, &lt;/FONT&gt;&lt;FONT id=x5eb2965 color=#0000ff&gt;ByVal&lt;/FONT&gt;&lt;FONT id=x5eb2966 size=2&gt; e &lt;/FONT&gt;&lt;FONT id=x5eb2967 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb2968 size=2&gt; System.EventArgs) &lt;/FONT&gt;&lt;FONT id=x5eb2969 color=#0000ff&gt;Handles&lt;/FONT&gt;&lt;FONT id=x5eb2970 size=2&gt; ToStringButton.Click&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2971 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2972 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2973 size=2&gt;&lt;FONT id=x5eb2974 color=#0000ff&gt;Dim&lt;/FONT&gt;&lt;FONT id=x5eb2975 size=2&gt; p &lt;/FONT&gt;&lt;FONT id=x5eb2976 color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT id=x5eb2977 size=2&gt; Business.Person&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2978 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb2979&gt;&lt;/P&gt; &lt;P id=x5eb2980 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2981 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2982 size=2&gt;&lt;FONT id=x5eb2983 size=2&gt;p = &lt;/FONT&gt;&lt;FONT id=x5eb2984 color=#0000ff&gt;CType&lt;/FONT&gt;&lt;FONT id=x5eb2985 size=2&gt;(PeopleListBox.SelectedItem, Business.Person)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2986 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2987 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2988 size=2&gt;&lt;FONT id=x5eb2989 size=2&gt;MsgBox(p.ToString())&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2990 style="BACKGROUND: #d9d9d9; MARGIN-BOTTOM: 0in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2991 face="新宋体, monospace"&gt;&lt;FONT id=x5eb2992 size=2&gt;&lt;FONT id=x5eb2993 color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT id=x5eb2994 color=#0000ff&gt;Sub&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2995 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2996 size=2&gt;当你单击按钮后，你看到的结果像如下样子：&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb2997 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb2998 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb2999 size=2&gt;&lt;FONT id=x5eb3000 size=2&gt;When you click the button, you should see results that look like this:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb3001 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;IMG id=x5eb3002 height=497 src="http://docs.google.com/File?id=dggdkn6_242t9qbwkgx_b" width=716 align=bottom border=0 name=bb960413&gt;&lt;/P&gt; &lt;H2 class=western id=x5eb3003 style="BACKGROUND: #ffffff; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb3004 face="宋体, SimSun"&gt;&lt;FONT id=x5eb3005 size=2&gt;销毁&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt; &lt;H2 class=western id=x5eb3006 style="BACKGROUND: #ffffff; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb3007 size=2&gt;&lt;FONT id=x5eb3008 size=2&gt;Dispose()&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt; &lt;P id=x5eb3009 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb3010 size=2&gt;有更多关于数据序列化的主题，在这个文章中只讲解了基本的和主要的问题。最常见的挑战是处理只读数据，我已经向你展示处理这种情况的技术。武装你的知识，你现在能够暴露和使用自定义业务对象的服务。&lt;/FONT&gt;&lt;/P&gt; &lt;P id=x5eb3011 style="BACKGROUND: #ffffff; MARGIN-BOTTOM: 0.1in; LINE-HEIGHT: 100%"&gt;&lt;FONT id=x5eb3012 face="Verdana, sans-serif"&gt;&lt;FONT id=x5eb3013 size=2&gt;&lt;FONT id=x5eb3014 size=2&gt;While there is more to the subject of data serialization, this article covers the fundamentals and the core issues. The most common challenge is dealing with read-only data, and I’ve shown you a technique to deal with this situation. Armed with this knowledge, you should now be able to build services that expose and consume custom business objects.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=western id=x5eb3015 style="MARGIN-BOTTOM: 0.14in; LINE-HEIGHT: 100%"&gt;&lt;BR id=x5eb3016&gt;&lt;BR id=x5eb3017&gt;&lt;/P&gt;&lt;BR id=x5eb3018&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1539264213384076775-1519671512430433684?l=blog.sonofvb.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SonOVB/~4/HAqEKNhhbIE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sonofvb.net/feeds/1519671512430433684/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1539264213384076775&amp;postID=1519671512430433684" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/1519671512430433684?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/1519671512430433684?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SonOVB/~3/HAqEKNhhbIE/wcf-using-custom-business-objects-with_29.html" title="" /><author><name>G yc{Son of VB.NET}</name><uri>http://www.blogger.com/profile/10642280584042013225</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14927754176143394902" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.sonofvb.net/2008/08/wcf-using-custom-business-objects-with_29.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYCR38zcSp7ImA9WxdaGUU.&quot;"><id>tag:blogger.com,1999:blog-1539264213384076775.post-4375897617163846540</id><published>2008-08-29T11:37:00.000+08:00</published><updated>2008-08-29T11:56:06.189+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-29T11:56:06.189+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET 3.5" /><category scheme="http://www.blogger.com/atom/ns#" term="LINQ" /><title /><content type="html">&lt;H1 id=f1k_ style="MARGIN: auto 0cm"&gt;Lambda表达式和表达式树&lt;SPAN id=f1k_3 style="FONT-FAMILY: 宋体"&gt;（&lt;/SPAN&gt;Lambda Expressions and Expression Trees&lt;SPAN id=f1k_6 style="FONT-FAMILY: 宋体"&gt;）&lt;/SPAN&gt;&lt;/H1&gt; &lt;P id=rk.:0&gt;&lt;FONT id=rk.:1 size=1&gt;        原文地址：&lt;A id=gaqw title=http://blogs.msdn.com/vbteam/archive/2007/09/11/lambda-expressions-and-expression-trees.aspx href="http://blogs.msdn.com/vbteam/archive/2007/09/11/lambda-expressions-and-expression-trees.aspx"&gt;&lt;FONT id=gaqw0 color=#669966&gt;http://blogs.msdn.com/vbteam/archive/2007/09/11/lambda-expressions-and-expression-trees.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=rk.:2&gt;&lt;FONT id=rk.:3 size=1&gt;        作者： Tim&lt;/FONT&gt;&lt;/P&gt; &lt;P id=rk.:4&gt; &lt;/P&gt; &lt;DIV class=MsoNormal id=i4t631 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt; &lt;/DIV&gt; &lt;DIV class=MsoNormal id=qv:i style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt;&lt;SPAN id=qv:i0 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq9 size=3&gt;最近我的《&lt;/FONT&gt;&lt;/SPAN&gt;&lt;A id=i4t634 href="http://msdn.microsoft.com/msdnmag/issues/07/09/BasicInstincts/"&gt;&lt;SPAN id=i4t635 style="COLOR: blue; FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq90 size=3&gt;Lambda &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t636 style="COLOR: blue; FONT-FAMILY: 宋体"&gt;表达式&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN id=i4t638 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=i4t639 size=3&gt;》&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t640 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq91 size=3&gt;的文章被发布到&lt;/FONT&gt;MSDN magazine&lt;FONT id=kfq92 size=3&gt;上了。所以在这个帖子我将展开讨论之前文章中的想法（&lt;/FONT&gt;Ideas&lt;FONT id=kfq93 size=3&gt;），如果这里想法使你感到迷茫，请你先去读一下之前的文章。&lt;/FONT&gt; &lt;/SPAN&gt;&lt;/DIV&gt; &lt;P class=MsoNormal id=i4t645 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt; &lt;/P&gt; &lt;P class=MsoNormal id=i4t648 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt;&lt;SPAN id=i4t649 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq95 size=3&gt;Lambda &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t650 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq96 size=3&gt;表达式 非常&lt;/FONT&gt;Cool &lt;FONT id=kfq97 size=3&gt;，除了文章中所描述的&lt;/FONT&gt;,Lambda&lt;FONT id=kfq98 size=3&gt;表达式还可以捕获另一个可读形式的&lt;/FONT&gt;Lambda&lt;FONT id=kfq99 size=3&gt;表达式的内容，并把它当作数据而不是可执行代码。&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;DIV class=MsoNormal id=i4t657 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt; &lt;/DIV&gt; &lt;DIV class=MsoNormal id=wdak style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt;&lt;SPAN id=wdak0 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=wdak1 size=3&gt;例如，下面几行代码将&lt;/FONT&gt;Lambda&lt;FONT id=kfq912 size=3&gt;表达式转换成可调用委托（&lt;/FONT&gt;Callable delegate&lt;FONT id=kfq913 size=3&gt;）&lt;/FONT&gt; &lt;/SPAN&gt;&lt;/DIV&gt; &lt;P class=MsoNormal id=i4t663 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt;&lt;SPAN id=i4t664 style="COLOR: blue; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq914 size=3&gt;Dim&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t665 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq915 size=3&gt; f As &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t666 style="FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq916 size=3&gt;Func&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t667 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq917 size=3&gt;(Of &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t668 style="COLOR: blue; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq918 size=3&gt;Integer&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t669 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq919 size=3&gt;, &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t670 style="COLOR: blue; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq920 size=3&gt;Integer&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t671 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq921 size=3&gt;) = &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t672 style="COLOR: blue; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq922 size=3&gt;function&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t673 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq923 size=3&gt;(x) x * 2 &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=i4t675 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt;&lt;SPAN id=i4t676 style="COLOR: blue; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq924 size=3&gt;Dim&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t677 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq925 size=3&gt; r = f(10) &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=i4t682 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt;&lt;SPAN id=i4t683 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq927 size=3&gt;在这个实例中，第一行代码将建立一个&lt;/FONT&gt;Lambda &lt;FONT id=kfq928 size=3&gt;表达式并将它神奇的配额给一个可调用委托（&lt;/FONT&gt;Callable delegate&lt;FONT id=kfq929 size=3&gt;）&lt;/FONT&gt; f &lt;FONT id=kfq930 size=3&gt;。之后，第二行 调用&lt;/FONT&gt; f &lt;FONT id=kfq931 size=3&gt;并返回&lt;/FONT&gt; 20. &lt;/SPAN&gt;&lt;/P&gt; &lt;DIV class=MsoNormal id=i4t690 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt; &lt;/DIV&gt; &lt;DIV class=MsoNormal id=wdak2 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt;&lt;SPAN id=wdak3 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=wdak4 size=3&gt;这个非常酷，我希望我的文章能说明我为什么觉得的原因。还有更酷的你可以分配一个&lt;/FONT&gt;Lambda &lt;FONT id=kfq934 size=3&gt;表达式到一个特殊变量类型并且编译器将帮你做更多魔法般的事：&lt;/FONT&gt; &lt;/SPAN&gt;&lt;/DIV&gt; &lt;P class=MsoNormal id=i4t698 style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt;&lt;SPAN id=i4t699 style="COLOR: blue; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq935 size=3&gt;Dim&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t6100 style="COLOR: black; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq936 size=3&gt; e &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t6101 style="COLOR: blue; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq937 size=3&gt;As&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t6102 style="COLOR: black; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq938 size=3&gt; Expression(Of Func(Of &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t6103 style="COLOR: blue; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq939 size=3&gt;Integer&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t6104 style="COLOR: black; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq940 size=3&gt;, &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t6105 style="COLOR: blue; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq941 size=3&gt;Integer&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t6106 style="COLOR: black; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq942 size=3&gt;)) = &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t6107 style="COLOR: blue; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq943 size=3&gt;function&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t6108 style="COLOR: black; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq944 size=3&gt;(x) x * 2 &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;DIV class=MsoNormal id=i4t6110 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt; &lt;/DIV&gt; &lt;DIV class=MsoNormal id=wdak5 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt;&lt;SPAN id=wdak6 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=wdak7 size=3&gt;在这个代码示例中，&lt;/FONT&gt;e &lt;FONT id=kfq948 size=3&gt;不是可调用委托（&lt;/FONT&gt;Callable delegate&lt;FONT id=kfq949 size=3&gt;）。实际上，它是一个&lt;/FONT&gt;&lt;B id=i4t6118&gt;表达式树&lt;/B&gt;&lt;FONT id=kfq950 size=3&gt;。一个表达式树是&lt;/FONT&gt;Lambda&lt;FONT id=kfq951 size=3&gt;表达式在数据表单中的表示形式，它可以方便你阅读和编写&lt;/FONT&gt;lambda&lt;FONT id=kfq952 size=3&gt;表达式。&lt;/FONT&gt; &lt;/SPAN&gt;&lt;/DIV&gt; &lt;P class=MsoNormal id=i4t6123 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt; &lt;/P&gt; &lt;P class=MsoNormal id=i4t6126 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt;&lt;SPAN id=i4t6127 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq954 size=3&gt;如果你在调试器中查看&lt;/FONT&gt;e&lt;FONT id=kfq955 size=3&gt;的值，你将会看到 你可以简单的推测那个表达式是一个整数变量&lt;/FONT&gt;x&lt;FONT id=kfq956 size=3&gt;乘以常数&lt;/FONT&gt;2&lt;FONT id=kfq957 size=3&gt;。&lt;/FONT&gt; &lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=i4t6133 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt; &lt;/P&gt; &lt;P class=MsoNormal id=i4t6136 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt;&lt;SPAN id=i4t6137 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq959 size=3&gt;默认的，&lt;/FONT&gt;IEnumerable &lt;FONT id=kfq960 size=3&gt;的扩展查询操作使用&lt;/FONT&gt;Lambda&lt;FONT id=kfq961 size=3&gt;表达式。&lt;/FONT&gt;IQueryable&lt;FONT id=kfq962 size=3&gt;的扩展查询使用表达式树。因此，当你在&lt;/FONT&gt;queryable&lt;FONT id=kfq963 size=3&gt;对象上使用查询时，编译器将产生表达式树通过&lt;/FONT&gt;Lambda&lt;FONT id=kfq964 size=3&gt;表达式树。&lt;/FONT&gt; &lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=i4t6145 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt; &lt;/P&gt; &lt;P class=MsoNormal id=i4t6151 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt;&lt;A id=i4t6153 href="http://msdn.microsoft.com/msdnmag/issues/07/08/BasicInstincts/"&gt;&lt;SPAN id=i4t6154 style="COLOR: blue; FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq967 size=3&gt;Scott&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN id=i4t6155 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq968 size=3&gt;,&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t6156 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq969 size=3&gt;我们小组开发人员之一。他写了一篇极好的文章来说明这些想法。他有一个很好的实例来展示使用若干&lt;/FONT&gt;Lambda&lt;FONT id=kfq970 size=3&gt;表达式来表示表达式树。&lt;/FONT&gt; &lt;/SPAN&gt;&lt;/P&gt; &lt;DIV class=MsoNormal id=i4t6163 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt; &lt;/DIV&gt; &lt;DIV class=MsoNormal id=wdak8 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt;&lt;SPAN id=wdak9 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=wdak10 size=3&gt;你可以用表达式树做什么？&lt;/FONT&gt; &lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV class=MsoNormal id=i4t6170 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt; &lt;/DIV&gt; &lt;DIV class=MsoNormal id=wdak11 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt;&lt;SPAN id=wdak12 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=wdak13 size=3&gt;通常，你可以做&lt;/FONT&gt;2&lt;FONT id=kfq975 size=3&gt;件事：&lt;/FONT&gt; &lt;/SPAN&gt;&lt;/DIV&gt; &lt;OL id=i4t6175 type=1&gt; &lt;LI class=MsoNormal id=i4t6176 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"&gt; &lt;P class=MsoNormal id=i4t6189 style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-ALIGN: left" align=left&gt;&lt;/P&gt;&lt;SPAN id=i4t6194 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq982 size=3&gt;表达式树中的数据，自定义处理。你也可以转换表达式树中的数据到另一个格式（像是&lt;/FONT&gt;XML&lt;FONT id=kfq983 size=3&gt;） &lt;/FONT&gt; &lt;/SPAN&gt;  &lt;LI class=MsoNormal id=i4t6198 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"&gt;&lt;SPAN id=i4t6199 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq984 size=3&gt;使用&lt;/FONT&gt;.Compile() &lt;FONT id=kfq985 size=3&gt;方法将表达式树变成一个可执行的委托&lt;/FONT&gt; &lt;/SPAN&gt;&lt;/LI&gt; &lt;LI class=MsoNormal id=lpv5 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"&gt;&lt;SPAN id=i4t6207 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq986 size=3&gt;使用动态条件构建查询：查看&lt;/FONT&gt;&lt;/SPAN&gt;&lt;A id=i4t6209 href="http://blogs.msdn.com/vbteam/archive/2007/08/29/implementing-dynamic-searching-using-linq.aspx"&gt;&lt;SPAN id=i4t6210 style="COLOR: blue; FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq987 size=3&gt;Jonathan's&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN id=i4t6211 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq988 size=3&gt; (&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t6212 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq989 size=3&gt;我们的&lt;/FONT&gt; PM)&lt;FONT id=kfq990 size=3&gt;发布的文章。他有一个很好的实例来说明你如何操作表达式树和&lt;/FONT&gt;Lambda&lt;FONT id=kfq991 size=3&gt;表达式来构建自定义条件。&lt;/FONT&gt; &lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt; &lt;P class=MsoNormal id=i4t6217 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt; &lt;/P&gt; &lt;P class=MsoNormal id=i4t6220 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt;&lt;SPAN id=i4t6221 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq993 size=3&gt;第二项是有趣的，因为它意味着 你可以写一个&lt;/FONT&gt;Lambda&lt;FONT id=kfq994 size=3&gt;表达式到表达式树中或者类似的等待，并返回一个可调用委托（&lt;/FONT&gt;Callable delegate&lt;FONT id=kfq995 size=3&gt;）。&lt;/FONT&gt; &lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=i4t6226 style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt;&lt;SPAN id=i4t6227 style="COLOR: blue; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq996 size=3&gt;Dim&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t6228 style="COLOR: black; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq997 size=3&gt; e &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t6229 style="COLOR: blue; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq998 size=3&gt;As&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t6230 style="COLOR: black; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq999 size=3&gt; Expression(Of Func(Of &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t6231 style="COLOR: blue; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq9100 size=3&gt;Integer&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t6232 style="COLOR: black; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq9101 size=3&gt;, &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t6233 style="COLOR: blue; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq9102 size=3&gt;Integer&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t6234 style="COLOR: black; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq9103 size=3&gt;)) = &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t6235 style="COLOR: blue; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq9104 size=3&gt;function&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t6236 style="COLOR: black; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq9105 size=3&gt;(x) x * 2 &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=i4t6238 style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt;&lt;SPAN id=i4t6239 style="COLOR: blue; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq9106 size=3&gt;Dim&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t6240 style="COLOR: black; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq9107 size=3&gt; f = e.Compile &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=i4t6242 style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt;&lt;SPAN id=i4t6243 style="COLOR: blue; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq9108 size=3&gt;Dim&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=i4t6244 style="COLOR: black; FONT-FAMILY: Consolas"&gt;&lt;FONT id=kfq9109 size=3&gt; r = f(10) &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;DIV class=MsoNormal id=i4t6249 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt; &lt;/DIV&gt; &lt;DIV class=MsoNormal id=lpv50 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt;&lt;SPAN id=lpv51 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=lpv52 size=3&gt;在这个示例中，&lt;/FONT&gt;r&lt;FONT id=kfq9112 size=3&gt;的值是&lt;/FONT&gt;20&lt;FONT id=kfq9113 size=3&gt;，就像先前例子一样我们直接分配了&lt;/FONT&gt;Lambda&lt;FONT id=kfq9114 size=3&gt;到一个委托（类）。&lt;/FONT&gt; &lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV class=MsoNormal id=i4t6256 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt; &lt;/DIV&gt; &lt;DIV class=MsoNormal id=lpv53 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt;&lt;SPAN id=lpv54 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=lpv55 size=3&gt;为什么有趣？&lt;/FONT&gt; &lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV class=MsoNormal id=i4t6263 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt; &lt;/DIV&gt; &lt;P class=MsoNormal id=i4t6266 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt;&lt;SPAN id=i4t6267 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq9118 size=3&gt;除了表达式树，不可能用描述（格式）来描述表达式。除非使用&lt;/FONT&gt;IL&lt;FONT id=kfq9119 size=3&gt;（中间语言），但那个太低级来来重新建立用户需要的表达式。相比之下，表达式树提供了一个高级的 树的形式来表示一个表达式，所以你可以简单的理解用户表达式的目的。&lt;/FONT&gt; &lt;/SPAN&gt;&lt;/P&gt; &lt;DIV class=MsoNormal id=i4t6274 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt; &lt;/DIV&gt; &lt;DIV class=MsoNormal id=fzfs style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left&gt;&lt;SPAN id=fzfs0 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=fzfs1 size=3&gt;这有可能使你感兴趣的使用表达式树：&lt;/FONT&gt; &lt;/SPAN&gt;&lt;/DIV&gt; &lt;P class=MsoNormal id=i4t6291 style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-ALIGN: left" align=left&gt; &lt;/P&gt; &lt;OL id=i4t6294 type=1&gt; &lt;LI class=MsoNormal id=i4t6295 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"&gt;&lt;SPAN id=i4t6296 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq9127 size=3&gt;表达式，可以转换他们成为委托并调用它们。 &lt;/FONT&gt; &lt;/SPAN&gt;  &lt;LI class=MsoNormal id=i4t6299 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"&gt;&lt;SPAN id=i4t6300 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq9128 size=3&gt;转换表达式到&lt;/FONT&gt;SQL&lt;FONT id=kfq9129 size=3&gt;，那将使得它们可被服务器执行（这就是&lt;/FONT&gt;LINQ to SQL &lt;FONT id=kfq9130 size=3&gt;做的） &lt;/FONT&gt; &lt;/SPAN&gt;  &lt;LI class=MsoNormal id=i4t6305 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"&gt;&lt;SPAN id=i4t6306 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq9131 size=3&gt;转换表达式到&lt;/FONT&gt;XML&lt;FONT id=kfq9132 size=3&gt;并写入它们到磁盘上。 &lt;/FONT&gt; &lt;/SPAN&gt;  &lt;LI class=MsoNormal id=i4t6310 style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"&gt;&lt;SPAN id=i4t6311 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=kfq9133 size=3&gt;转换表达式到自定义格式，可以通过网络协议放松到服务器，并可以重新建立表达式树，&lt;SPAN id=o953 style=" FONT-FAMILY: 宋体"&gt;&lt;font size="3"&gt;之后根据它执行与&lt;/font&gt;/&lt;font size="3"&gt;或（&lt;/font&gt;And/OR&lt;font size="3"&gt;）。&lt;/font&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt; &lt;/LI&gt;&lt;/OL&gt; &lt;P id=rk.:5&gt;   &lt;P id=rk.:7&gt; &lt;/P&gt; &lt;P id=rk.:8&gt; &lt;/P&gt; &lt;P id=kfq9138&gt; &lt;/P&gt;&lt;BR id=rk.:9&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1539264213384076775-4375897617163846540?l=blog.sonofvb.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SonOVB/~4/zlG_KXqLRL0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sonofvb.net/feeds/4375897617163846540/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1539264213384076775&amp;postID=4375897617163846540" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/4375897617163846540?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/4375897617163846540?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SonOVB/~3/zlG_KXqLRL0/lambda-lambda-expressions-and.html" title="" /><author><name>G yc{Son of VB.NET}</name><uri>http://www.blogger.com/profile/10642280584042013225</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14927754176143394902" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.sonofvb.net/2008/08/lambda-lambda-expressions-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEFSH06eSp7ImA9WxdaGUg.&quot;"><id>tag:blogger.com,1999:blog-1539264213384076775.post-741070975024871590</id><published>2008-08-29T03:07:00.000+08:00</published><updated>2008-08-29T03:10:19.311+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-29T03:10:19.311+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET 3.5" /><category scheme="http://www.blogger.com/atom/ns#" term="LINQ" /><title /><content type="html">&lt;H1 id=g-f9&gt; &lt;H1 id=g-f90&gt;充分发挥 Visual Studio“Orcas”中查询的强大功能&lt;/H1&gt;&lt;/H1&gt; &lt;P id=g-f91&gt;&lt;FONT id=g-f92 size=1&gt;         原文地址：&lt;A id=g-f93 href="http://msdn.microsoft.com/msdnmag/issues/07/06/VBLINQ/Default.aspx?loc=zh"&gt;http://msdn.microsoft.com/msdnmag/issues/07/06/VBLINQ/Default.aspx?loc=zh&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=g-f94&gt;&lt;FONT id=g-f95 size=1&gt;         作者：&lt;/FONT&gt;&lt;A id=g-f96 title="More articles by this author" href="http://msdn.microsoft.com/msdnmag/find/?type=Au&amp;amp;phrase=Ting%20Liang%20and%20Kit%20George&amp;amp;words=exact"&gt;&lt;FONT id=g-f97 color=#810081 size=1&gt;Ting Liang&lt;/FONT&gt;&lt;/A&gt;  &lt;A id=g-f99 title="More articles by this author" href="http://msdn.microsoft.com/msdnmag/find/?type=Au&amp;amp;phrase=Ting%20Liang%20and%20Kit%20George&amp;amp;words=exact"&gt;&lt;FONT id=g-f910 color=#810081 size=1&gt;Kit George&lt;/FONT&gt;&lt;/A&gt; &lt;/P&gt; &lt;HR id=g-f911&gt;  &lt;P id=g-f912&gt; 目   录&lt;/P&gt; &lt;UL id=g-f913 dir=ltr&gt; &lt;LI id=g-f914&gt; &lt;DIV id=g-f915 style="MARGIN-RIGHT: 0px"&gt;&lt;A id=g1:z title="LINQ 语法" href="#LINQ_语法"&gt;LINQ 语法&lt;/A&gt; &lt;/DIV&gt; &lt;LI id=g-f916&gt; &lt;DIV id=g-f917 style="MARGIN-RIGHT: 0px"&gt;&lt;A id=jxqh title="From 子句" href="#From_子句"&gt;From 子句&lt;/A&gt; &lt;/DIV&gt; &lt;LI id=g-f918&gt; &lt;DIV id=g-f919 style="MARGIN-RIGHT: 0px"&gt;&lt;A id=pvsp title="Select 子句" href="#Select_子句"&gt;Select 子句&lt;/A&gt; &lt;/DIV&gt; &lt;LI id=g-f920&gt; &lt;DIV id=g-f921 style="MARGIN-RIGHT: 0px"&gt;&lt;A id=dvpe title=使用查询结果 href="#使用查询结果"&gt;使用查询结果&lt;/A&gt; &lt;/DIV&gt; &lt;LI id=g-f922&gt; &lt;DIV id=g-f923 style="MARGIN-RIGHT: 0px"&gt;&lt;A id=p4g- title="使用 Where 子句筛选" href="#使用_Where_子句筛选"&gt;使用 Where 子句筛选&lt;/A&gt; &lt;/DIV&gt; &lt;LI id=g-f924&gt; &lt;DIV id=g-f925 style="MARGIN-RIGHT: 0px"&gt;&lt;A id=yurj title="使用 Order By 排序" href="#使用_Order_By_排序"&gt;使用 Order By 排序&lt;/A&gt; &lt;/DIV&gt; &lt;LI id=g-f926&gt; &lt;DIV id=g-f927 style="MARGIN-RIGHT: 0px"&gt;&lt;A id=o_1j title=更多子句 href="#更多子句"&gt;更多子句&lt;/A&gt; &lt;/DIV&gt; &lt;LI id=g-f928&gt; &lt;DIV id=g-f929 style="MARGIN-RIGHT: 0px"&gt;&lt;A id=la:e title=摘要 href="#摘要"&gt;摘要&lt;/A&gt; &lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt; &lt;P id=g-f930&gt;   &lt;HR id=g-f931&gt;  &lt;P id=g-f932&gt; &lt;/P&gt; &lt;P id=g-f933&gt;&lt;BR id=g-f934&gt;       长期以来，开发人员一直需要能够以其代码使用数据查询技术，这与他们在 SQL 查询中可能需要的十分相似。现在，随着 Microsoft® Visual Studio® 的新版本（代号为“Orcas”）即将发布，这种工具也将面市。Visual Studio 的下一个版本包含了一组新的语言功能 (LINQ)，统称为语言集成查询 (LINQ)，它将查询功能直接添加到 Visual Basic® 和 Visual C#®。 &lt;BR id=g-f935&gt; &lt;/P&gt; &lt;P id=g-f936&gt;        有了 LINQ，您可以直接使用 Visual Basic 编写数据访问代码。您可以使用编译时语法检查和架构检查，以及更好的工具支持（如 IntelliSense®）来编写您的查询。您不必再使用字符串来编写查询，也不必甚至等到运行时才能知道其构成是否正确。有了 LINQ，数据访问代码便可以从底层存储工具中提取出来。这意味着，您可以使用同一个代码构造来查询关系数据库、XML 和内存中的对象，而且您可以轻松地联接跨不同源域的信息。例如，您可以创建一个存储在 XML 中的客户名称列表和存储在数据库表中的客户名称列表之间的组合。此外，LINQ 允许延迟执行，这样您就可以将查询分成几个逻辑部分，并且仍能实现只要运行一次最终结果的性能优势。最后，Visual Basic/XML 集成几乎可以彻底消除您编写的代码和您正试图表示或操作的文档之间的概念性障碍。现在，让我们开始学习如何编写一些查询。&lt;/P&gt; &lt;H3 id=g-f937&gt;&lt;BR id=g-f938&gt;&lt;A id=g-:8 name=LINQ_语法&gt;&lt;/A&gt;LINQ 语法&lt;/H3&gt; &lt;P id=g-f939&gt;    利用 LINQ 您可以查询不同的源，例如 Microsoft .NET Framework 对象集合、关系数据库或 XML 数据源。在 Visual Basic 中，LINQ 查询的一般格式如下所示：&lt;/P&gt; &lt;BLOCKQUOTE id=uy2u style="BACKGROUND-COLOR: #cccccc"&gt;From ... &amp;lt; Where ... Order By ... Select ... &amp;gt;&lt;/BLOCKQUOTE&gt; &lt;P id=g-f940&gt;&lt;BR id=g-f941&gt;    当然，如果您是 SQL 程序员，您会想知道为什么查询是以 From 开始，而不是以 Select 开始。原因很简单：即 IntelliSense。通过首先指出数据源，IntelliSense 可以显示集合中对象的类型成员的正确列表。当您键入 Select 子句时，这一点很重要。在下面的部分，我们会看一些标准的 LINQ 子句，并且看一下它们是如何相互构建的，以致可以创建强大、灵活的查询。我们会依次看下列各个子句：From 子句、Select 子句、使用查询结果、Where 子句和 Order By 子句。在下列示例中，我们有时会引用一个 Customer 或一个 Order。对于这些示例，设想它们已在&lt;A id=woyj title=图1 href="#图1"&gt;图1&lt;/A&gt; 中定义。每个 Customer 都通过 Orders 属性具有对其订单的集合的引用。这允许两个实体之间存在简单关系。该关联由每个 Order 中的 CustomerID 外键形成。除了这些类型定义外，还有存储在变量客户中的 Customers 集合。&lt;/P&gt; &lt;P id=g-f942&gt; &lt;/P&gt; &lt;H3 id=g-f943&gt;&lt;A id=y.k_ name=From_子句&gt;&lt;/A&gt;From 子句&lt;/H3&gt; &lt;P id=g-f944&gt;    From 子句是 LINQ 的核心，因为每个查询都需要它。查询必须始终以 From 子句开头，它是必须要明确提供的唯一的子句。From 子句的基本模式如下： &lt;/P&gt; &lt;BLOCKQUOTE id=d39_ style="BACKGROUND-COLOR: #cccccc"&gt;From &amp;lt;query variable&amp;gt; In &amp;lt;datasource&amp;gt;&lt;/BLOCKQUOTE&gt; &lt;P id=g-f945&gt;&lt;BR id=g-f946&gt;    从本质上而言，From 表示遍历一组数据的行为。要实现此操作，它需要与源中的每个数据项相对应的变量，这与用于 For Each 语句的迭代变量非常相似。在 From 语句后面的子句中，可以引用该查询变量来对数据进行筛选、排序或其他操作。下面是 From 子句一个非常简单的示例：&lt;/P&gt; &lt;BLOCKQUOTE id=g-f947 dir=ltr style="MARGIN-RIGHT: 0px; BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=g-f948 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=g-f949 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; numbers() &lt;/font&gt;&lt;SPAN id=g-f950 style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN id=g-f951 style="COLOR: blue"&gt;Integer&lt;/SPAN&gt;&lt;font size="2"&gt; = {1, 7, 4, 2, 91, 12, 23, 37, 42}&lt;/font&gt;&lt;/P&gt; &lt;P id=g-f952 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=g-f953 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; allNumbers = &lt;/font&gt;&lt;SPAN id=g-f954 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; number &lt;/font&gt;&lt;SPAN id=g-f955 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; numbers&lt;/font&gt;&lt;/P&gt; &lt;P id=g-f956 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=g-f957 style="COLOR: blue"&gt;For&lt;/SPAN&gt; &lt;SPAN id=g-f958 style="COLOR: blue"&gt;Each&lt;/SPAN&gt;&lt;font size="2"&gt; num &lt;/font&gt;&lt;SPAN id=g-f959 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; allNumbers&lt;/font&gt;&lt;/P&gt; &lt;P id=g-f960 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;    Console.Write(num &amp;amp; &lt;/font&gt;&lt;SPAN id=g-f961 style="COLOR: #a31515"&gt;" "&lt;/SPAN&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/P&gt; &lt;P id=g-f962 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;Next&lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=g-f963&gt;    在此示例中，查询会返回类型为 IEnumerable(Of Integer) 的集合。关于此查询，有几个地方值得注意。首先，Select 是隐式的，这也就是您在示例中的看不到它的原因。Select 语句是可选的；如果您一个也不提供，那么即会返回作用域中的变量集。其次，该查询不是真的很有用。您可以删除该查询，然后只要遍历使用 For Each 循环的那些数字变量。LINQ 的真正功能还尚不明显，但是我们来看一下下面的查询：&lt;/P&gt; &lt;BLOCKQUOTE id=g-f964 style="BACKGROUND-COLOR: #cccccc"&gt;From &amp;lt;query variable&amp;gt; As Type In &amp;lt;datasource&amp;gt;&lt;/BLOCKQUOTE&gt; &lt;BLOCKQUOTE id=s9e5 style="BACKGROUND-COLOR: #cccccc"&gt;&lt;SPAN id=g-f965 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; checkboxes = &lt;SPAN id=g-f966 style="COLOR: blue"&gt;From&lt;/SPAN&gt; checkbox  &lt;SPAN id=g-f967 style="COLOR: blue"&gt;As&lt;/SPAN&gt; Checkbox In groupJobType.Controls&lt;/BLOCKQUOTE&gt; &lt;P id=g-f968&gt;    From 语句的变体允许您指定遵循该查询变量的类型语句。如果您想从特定源检索类型，并且在检索它们的时候重新将它们键入到更具体（也可能不那么具体）的类型中，这就很有用。我们恰好知道，groupJobType 的 GroupBox 中的所有控件都是 Checkbox 控件，因此，我们可以在检索它们的时候安全地将它们键入 Checkbox。&lt;/P&gt; &lt;P id=g-f969&gt;    还有使用 From 关键字两次的 From 子句的另一个变体：&lt;/P&gt; &lt;BLOCKQUOTE id=mks. style="BACKGROUND-COLOR: #cccccc"&gt;From &amp;lt;query variable&amp;gt; In &amp;lt;datasource&amp;gt; Let &amp;lt;variable&amp;gt; = &amp;lt;value&amp;gt;  &lt;P id=g-f970&gt;  &lt;/P&gt; &lt;P id=g-f971 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=g-f972 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; evens = &lt;/font&gt;&lt;SPAN id=g-f973 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; Number &lt;/font&gt;&lt;SPAN id=g-f974 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; numbers &lt;/font&gt;&lt;SPAN id=g-f975 style="COLOR: blue"&gt;Let&lt;/SPAN&gt;&lt;font size="2"&gt; IsEven = (Number &lt;/font&gt;&lt;SPAN id=g-f976 style="COLOR: blue"&gt;Mod&lt;/SPAN&gt;&lt;font size="2"&gt; 2 = 0)&lt;/font&gt;&lt;/P&gt; &lt;P id=g-f977&gt; &lt;/P&gt; &lt;P id=b5i_&gt; &lt;BR id=g-f984&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_0&gt; &lt;/P&gt; &lt;P id=b5i_1&gt;    该查询语法实际上就是一个 From 子句，它后面的部分称为 From 的“Let”部分。实际上，我们是在定义另一个变量，并将它赋予指定的值。在这种情况下，我们是在名为“IsEven”的结果集上定义另一个值，即布尔值 — 不论我们选择的数字是否为偶数，都是这个结果。这个过程必然意味着所返回的对象发生了变化：它不再只是 Integers 的 IEnumerable，因为返回的可枚举的结果中的每个项目都包含数字和布尔值。我们会看一下如何使用下面的查询结果。请注意，在通用语法表达式中，只要有可能省略 From 关键字的第二次使用，就可以使用逗号代替；上面的两个示例都是相同的。&lt;/P&gt; &lt;P id=b5i_2&gt;    Let 变量和标准查询变量的区别在于，对 Let 变量始终指定 using = 值，而查询变量的后面则是 In 关键字。然而，Visual Basic 团队正在积极地研究公开 Let 变量的方法，因此，现在有一个好机会，那就是用于 Let 的支持的语法会从现在到产品以最终形式发布的这段时间内发生变化。&lt;/P&gt; &lt;P id=b5i_3&gt; &lt;/P&gt; &lt;BLOCKQUOTE id=b5i_4 style="BACKGROUND-COLOR: #cccccc"&gt;From &amp;lt;queryVar1&amp;gt; In &amp;lt;datasource1&amp;gt;, &amp;lt;queryVar2&amp;gt; In &amp;lt;datasource2&amp;gt;, ... &lt;/BLOCKQUOTE&gt; &lt;BLOCKQUOTE id=o.4g style="BACKGROUND-COLOR: #cccccc"&gt;&lt;SPAN id=b5i_5 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; customerOrders = &lt;SPAN id=b5i_6 style="COLOR: blue"&gt;From&lt;/SPAN&gt; cust &lt;SPAN id=b5i_7 style="COLOR: blue"&gt;In&lt;/SPAN&gt; customers, ord &lt;SPAN id=b5i_8 style="COLOR: blue"&gt;In&lt;/SPAN&gt; cust.Orders&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_9&gt;    该语法允许您指定多个数据源。在上面的示例中，我们获得了客户和订单的集合；实际上，这是对这两个源的一个隐式 Join。很多时候，这些源不会这么容易就关联起来（您的第一个查询变量上不会有第二个查询变量的集合），因此您必须使用 Where 子句将它们关联起来。但是在这种情况下，我们的 Orders 集合实际上都位于每个 cust 实例上；因此我们仅获得了应用于给定客户的订单。&lt;/P&gt; &lt;P id=b5i_10&gt; &lt;/P&gt; &lt;H3 id=b5i_11&gt;&lt;A id=g4tr name=Select_子句&gt;&lt;/A&gt;Select 子句&lt;/H3&gt; &lt;P id=b5i_12&gt;    到目前为止，您已了解如何指定数据源。请注意，在每个示例中，我们都已省略了 Select 关键字。这仅意味着我们使用了默认的 Select 行为，就是要选择指定的每个查询或 Let 变量（逻辑上等同于 Select *）。但是我们也有能力指定 Select 子句，并且我们在执行时获得了高得多的灵活性：&lt;/P&gt; &lt;BLOCKQUOTE id=b5i_13 style="BACKGROUND-COLOR: #cccccc"&gt;Select &amp;lt;varA&amp;gt;, &amp;lt;varB&amp;gt;, ...&lt;/BLOCKQUOTE&gt; &lt;BLOCKQUOTE id=ia90 style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_14 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_15 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; allNumbers = &lt;/font&gt;&lt;SPAN id=b5i_16 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; number &lt;/font&gt;&lt;SPAN id=b5i_17 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; numbers _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_18 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_19 style="COLOR: blue"&gt;                 Select&lt;/SPAN&gt;&lt;font size="2"&gt; number&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_20 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_21 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_22 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; evens = &lt;/font&gt;&lt;SPAN id=b5i_23 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; Number &lt;/font&gt;&lt;SPAN id=b5i_24 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; numbers &lt;/font&gt;&lt;SPAN id=b5i_25 style="COLOR: blue"&gt;Let&lt;/SPAN&gt;&lt;font size="2"&gt; IsEven = (Number &lt;/font&gt;&lt;SPAN id=b5i_26 style="COLOR: blue"&gt;Mod&lt;/SPAN&gt;&lt;font size="2"&gt; 2 = 0) _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_27 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_28 style="COLOR: blue"&gt;            Select&lt;/SPAN&gt;&lt;font size="2"&gt; Number, IsEven&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_29 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_30 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_31 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; customerOrders = &lt;/font&gt;&lt;SPAN id=b5i_32 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; cust &lt;/font&gt;&lt;SPAN id=b5i_33 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; customers, ord &lt;/font&gt;&lt;SPAN id=b5i_34 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; cust.Orders _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_35 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_36 style="COLOR: blue"&gt;                     Select&lt;/SPAN&gt;&lt;font size="2"&gt; cust, ord&lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_37&gt;    这是最简单的 Select。比较一下前面的查询和此处 From 部分中的同等查询。使用显式 Select 子句的这三个示例中的每一个查询，都将具有和 Select 子句为隐式子句的先前查询一样的行为。&lt;/P&gt; &lt;P id=b5i_38&gt;使用 Select 会更有趣，但是，当您对这个主题尝试变体时：&lt;/P&gt; &lt;BLOCKQUOTE id=zw8v style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_39 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_40 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; customerInfos1 = &lt;/font&gt;&lt;SPAN id=b5i_41 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; cust &lt;/font&gt;&lt;SPAN id=b5i_42 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; customers _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_43 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_44 style="COLOR: blue"&gt;                     Select&lt;/SPAN&gt;&lt;font size="2"&gt; cust.FirstName, cust.LastName&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_45 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_46 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_47 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; customerInfos2 = &lt;/font&gt;&lt;SPAN id=b5i_48 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; cust &lt;/font&gt;&lt;SPAN id=b5i_49 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; customers, ord &lt;/font&gt;&lt;SPAN id=b5i_50 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; cust.Orders _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_51 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_52 style="COLOR: blue"&gt;                     Select&lt;/SPAN&gt;&lt;font size="2"&gt; cust.LastName, ord.OrderID, ord.OrderDate&lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_53&gt; &lt;/P&gt; &lt;P id=b5i_54&gt;    首先要注意的是新的通用语法并未指定（该示例上方没有注释）。这是因为，如果您考虑了这些示例，则前一个代码就会是同一个样式：毕竟 FirstName 和 LastName 只是变量。但是与先前的示例不同，我们废弃了查询变量，并只返回了几个属性。这是一个非常强大的功能。&lt;/P&gt; &lt;P id=b5i_55&gt;LINQ 另一个强大的功能就是：当您不需要重命名字段的时候，Visual Basic 会根据属性的名称来推断这些名称。但是，有时候您可能希望重命名字段，或者合并数据，如下所示：&lt;/P&gt; &lt;BLOCKQUOTE id=b5i_56 style="BACKGROUND-COLOR: #cccccc"&gt;Select &amp;lt;aliasA&amp;gt; = &amp;lt;varA&amp;gt;, &amp;lt;aliasB&amp;gt; = &amp;lt;varB&amp;gt;, ... &lt;/BLOCKQUOTE&gt; &lt;BLOCKQUOTE id=k.4t style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_57 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_58 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; customerInfos1 = &lt;/font&gt;&lt;SPAN id=b5i_59 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; cust &lt;/font&gt;&lt;SPAN id=b5i_60 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; customers, ord &lt;/font&gt;&lt;SPAN id=b5i_61 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; cust.Orders _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_62 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_63 style="COLOR: blue"&gt;                     Select&lt;/SPAN&gt;&lt;font size="2"&gt; [Date] = ord.OrderDate, _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_64 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;Name = cust.FirstName &amp;amp; cust.LastName&lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_65&gt; &lt;/P&gt; &lt;P id=b5i_66&gt;    在某些情况下（例如 Date = ord.OrderDate），您可能会由于个人偏好而这样做。在另一种情况下（例如 Name = cust.FirstName &amp;amp; cust.LastName），您实际上会想创建一个新的数据段 — 一个字段组合。还有使用别名的第三种情况。设想您从恰好具有相同名称但实际不同的源中选择了两个字段。名称推断会对产生的类型为这些变量指定相同的属性名称，由于冲突，所以无法编译。您可以对一个（或两个）冲突的字段名称使用别名，以解决该冲突。&lt;/P&gt; &lt;P id=b5i_67&gt;    关于 Select 子句，值得注意的最后一点就是，它可以重新确定变量的作用域，因此查询中的任何子句仅可以看到 Select 公开的内容。我们会在讨论 Where 子句的时候更详细地讨论这一点。&lt;/P&gt; &lt;P id=b5i_68&gt; &lt;/P&gt; &lt;H3 id=b5i_69&gt;&lt;A id=xso. name=使用查询结果&gt;&lt;/A&gt;使用查询结果&lt;/H3&gt; &lt;P id=b5i_70&gt;    现在，让我们看一下如何使用查询结果。要执行这个操作，您需要了解在执行查询时，这个查询是由什么组成的：&lt;/P&gt; &lt;BLOCKQUOTE id=gb2a style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_71 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_72 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; allNumbers = &lt;/font&gt;&lt;SPAN id=b5i_73 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; number &lt;/font&gt;&lt;SPAN id=b5i_74 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; numbers _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_75 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_76 style="COLOR: blue"&gt;                 Select&lt;/SPAN&gt;&lt;font size="2"&gt; number&lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_77&gt; &lt;/P&gt; &lt;P id=b5i_78&gt;    任何查询的结果始终都会是 IEnumerable(Of T)。这是查询最可靠、最强大的一个方面，因为这意味着您可以一直遍历数据。有时候您可能知道 of T 的类型是什么，但有时候可能又不知道，例如在匿名类型的情况下。匿名类型对于 LINQ 是新类型，用来表示具有多个返回字段列的查询的任何结果。匿名类型是一种您无法以代码直接命名或参考，但是编译器可以将它视为其他命名类型的类型（编译器为该类型指定了名称，您只是不知道是什么名称，或者您不需要知道是什么名称）。匿名类型的字段名称可以直接以代码指定，也可以由查询表达式的编译器自动推断。例如，使用匿名类型会启用类似您之前看到的代码，{Num, IsEven} 和 {cust, ord} 的配对是有效的新类型，每个类型都包含两个数据段（包含作为各自可访问的字段名称的 Num、IsEven 和 Cust、Ord）：&lt;/P&gt; &lt;BLOCKQUOTE id=caxm style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_79 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_80 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; customerInfos1 = &lt;/font&gt;&lt;SPAN id=b5i_81 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; cust &lt;/font&gt;&lt;SPAN id=b5i_82 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; customers _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_83 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_84 style="COLOR: blue"&gt;                     Select&lt;/SPAN&gt;&lt;font size="2"&gt; cust.FirstName, cust.LastName&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_85 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_86 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_87 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; customerInfos2 = &lt;/font&gt;&lt;SPAN id=b5i_88 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; cust &lt;/font&gt;&lt;SPAN id=b5i_89 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; customers, ord &lt;/font&gt;&lt;SPAN id=b5i_90 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; cust.Orders _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_91 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_92 style="COLOR: blue"&gt;                     Select&lt;/SPAN&gt;&lt;font size="2"&gt; cust.LastName, ord.OrderID, ord.OrderDate&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_93 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_94&gt; &lt;/P&gt; &lt;P id=b5i_95&gt;    正如您能看到的一样，匿名类型允许您在 Select 子句指定不同数量的字段，而无需您预先指定表示每个特定字段组合的准确类型。虽然我们说每个查询都是一个 IEnumerable(Of T)，但是您可能已经注意到，实际上没有一个示例为代表该查询的变量指定了类型。您可能会担心该变量的类型会变成 System.Object，并且您正在失去流程中的所有强类型化支持。其实并非如此。有一个称为类型推断的新编译器功能，这意味着该编译器可以根据其初始化值，推断出声明没有类型说明符的变量的类型（如果您在代码顶部包括了 Option Infer On 语句）。例如，下列变量就是根据初始化值以静态的方式确定类型的：  &lt;/P&gt;&lt;SPAN id=b5i_96 style="COLOR: blue"&gt; &lt;BLOCKQUOTE id=q105 style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_97 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_98 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; x = 5 &lt;/font&gt;&lt;SPAN id=b5i_99 style="COLOR: green"&gt;' x is typed as an Integer&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_100 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_101 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; y = DateTime.Now &lt;/font&gt;&lt;SPAN id=b5i_102 style="COLOR: green"&gt;' x is typed as a DateTime&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_103 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_104 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; z = GetCustomer() &lt;/font&gt;&lt;SPAN id=b5i_105 style="COLOR: green"&gt;' assuming GetCustomer returns a customer&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_106 style=" MARGIN: 0in; COLOR: green; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;' type, z is typed as a Customer&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_107 style=" MARGIN: 0in; COLOR: green; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_108 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;x = &lt;/font&gt;&lt;SPAN id=b5i_109 style="COLOR: #a31515"&gt;"hello"&lt;/SPAN&gt; &lt;SPAN id=b5i_110 style="COLOR: green"&gt;' COMPILE-TIME ERROR: x can only store Integers&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/SPAN&gt; &lt;P id=b5i_111&gt;     表示查询的变量也可以采用相同的方式被强类型化。这使您可以真正地对那个变量直接使用成员，而不必担心那些后期绑定的成员。另外，您会保留强类型化的其他优点，例如 IntelliSense 支持。当声明新变量没有类型说明符时，在 For Each 语句中会出现同一种类型推断：&lt;/P&gt; &lt;BLOCKQUOTE id=z75_ style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_112 style=" MARGIN: 0in; COLOR: green; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;' assuming allNumbers is a collection of Integers, &lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_113 style=" MARGIN: 0in; COLOR: green; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;' the type of num is inferred to be an Integer&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_114 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_115 style="COLOR: blue"&gt;For&lt;/SPAN&gt; &lt;SPAN id=b5i_116 style="COLOR: blue"&gt;Each&lt;/SPAN&gt;&lt;font size="2"&gt; num &lt;/font&gt;&lt;SPAN id=b5i_117 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; allNumbers&lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_118&gt;    通常，使用查询时您可能最难知道的事情便是正被返回的对象是哪种特定种类。这就是您必须信任查询的原因。实际上，不同种类的对象都可以用来存储查询结果。值得注意的是，它们将始终为 IEnumerable(Of T)，因此您可以使用 For Each 或将它们传递给接受 IEnumerable 对象的 API，来遍历它们。尽管如此，但还有一条经验法则，它将帮助您分辨返回的对象，这条经验非常重要（您随即就会明白原因）。当返回的结果由单个命名类型组成时，则查询会返回 IEnumerable(Of &amp;lt;your type&amp;gt;)。当返回的结果由多个类型组成，则查询会返回 IEnumerable(Of &amp;lt;anonymous type&amp;gt;)。因此在上面的示例中，正好返回一个来自 Integers 数组的整数，所以您将获得一个 IEnumerable(Of Integer)。&lt;/P&gt; &lt;P id=b5i_119&gt;    当查询结果为单个类型的 IEnumerable 时，使用这个结果就会非常容易。您只需要使用 For Each 子句：&lt;/P&gt; &lt;BLOCKQUOTE id=g.i- style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_120 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_121 style="COLOR: blue"&gt;For&lt;/SPAN&gt; &lt;SPAN id=b5i_122 style="COLOR: blue"&gt;Each&lt;/SPAN&gt;&lt;font size="2"&gt; num &lt;/font&gt;&lt;SPAN id=b5i_123 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; allNumbers&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_124 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;    Console.WriteLine(num)&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_125 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;Next&lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_126&gt;    既然我们有了单个类型的 IEnumerable，就应该不会再有什么出乎我们的意料了。但是，现在让我们看一下涉及匿名类型的情况：&lt;/P&gt; &lt;BLOCKQUOTE id=qb2l style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_127 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_128 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; evens = &lt;/font&gt;&lt;SPAN id=b5i_129 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; Number &lt;/font&gt;&lt;SPAN id=b5i_130 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; numbers &lt;/font&gt;&lt;SPAN id=b5i_131 style="COLOR: blue"&gt;Let&lt;/SPAN&gt;&lt;font size="2"&gt; IsEven = (Number &lt;/font&gt;&lt;SPAN id=b5i_132 style="COLOR: blue"&gt;Mod&lt;/SPAN&gt;&lt;font size="2"&gt; 2 = 0) _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_133 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_134 style="COLOR: blue"&gt;            Select&lt;/SPAN&gt;&lt;font size="2"&gt; Number, IsEven&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_135 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_136 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_137 style="COLOR: blue"&gt;For&lt;/SPAN&gt; &lt;SPAN id=b5i_138 style="COLOR: blue"&gt;Each&lt;/SPAN&gt;&lt;font size="2"&gt; numInfo &lt;/font&gt;&lt;SPAN id=b5i_139 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; evens&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_140 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;    Console.WriteLine(&lt;/font&gt;&lt;SPAN id=b5i_141 style="COLOR: #a31515"&gt;"Is "&lt;/SPAN&gt;&lt;font size="2"&gt; &amp;amp; numInfo.Number &amp;amp; &lt;/font&gt;&lt;SPAN id=b5i_142 style="COLOR: #a31515"&gt;" even? "&lt;/SPAN&gt;&lt;font size="2"&gt; &amp;amp; _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_143 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;    numInfo.IsEven)&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_144 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;Next&lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_145&gt;    由于查询会返回内部具有两个数据段的对象，因此变量“evens”是 IEnumerable(Of &amp;lt;anonymous type&amp;gt;)。我们得出的每个实体都具有名为 Num 和 IsEven 的字段；因此，当我们遍历偶数集合时，我们需要废弃所有数据段以检索它们（例如 numInfo.Num）。有几个地方值得注意。首先，我们将这个迭代变量命名为 numInfo。当遍历匿名类型的集合时，使用通用名称来指示它具有多个数据段是一个不错的方法。其次，我们对示例中的查询变量使用了大写，因此当我们在 For Each 循环内部废弃和使用它们时，它们看似标准属性。我们不需要对上一个示例中的“number”这么做，因为那时还尚未引入匿名类型。为了说明这个操作的简易性，让我们再看一个示例： &lt;/P&gt; &lt;BLOCKQUOTE id=pi5. style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_146 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_147 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; customerInfos = &lt;/font&gt;&lt;SPAN id=b5i_148 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; cust &lt;/font&gt;&lt;SPAN id=b5i_149 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; customers, ord &lt;/font&gt;&lt;SPAN id=b5i_150 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; cust.Orders _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_151 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_152 style="COLOR: blue"&gt;                    Select&lt;/SPAN&gt;&lt;font size="2"&gt; Name = cust.FirstName &amp;amp; cust.LastName, _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_153 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;                    [Date] = ord.OrderDate&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_154 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_155 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_156 style="COLOR: blue"&gt;For&lt;/SPAN&gt; &lt;SPAN id=b5i_157 style="COLOR: blue"&gt;Each&lt;/SPAN&gt;&lt;font size="2"&gt; custInfo &lt;/font&gt;&lt;SPAN id=b5i_158 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; customerInfos&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_159 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;    Console.WriteLine(&lt;/font&gt;&lt;SPAN id=b5i_160 style="COLOR: #a31515"&gt;"Customer Name: "&lt;/SPAN&gt;&lt;font size="2"&gt; &amp;amp; custInfo.Name &amp;amp; _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_161 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_162 style="COLOR: #a31515"&gt;                      " Order Date: "&lt;/SPAN&gt;&lt;font size="2"&gt; &amp;amp; custInfo.Date)&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_163 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;Next&lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_164&gt;    它真是再简单不过了。但是，有时候您可能想分别检索您的名和姓两个字段。上面的变体会保留 Customers 和 Orders 中的所有数据（以后我们想使用其他字段），但是对这个特定的迭代不会获得同样的效果。&lt;/P&gt; &lt;BLOCKQUOTE id=oged style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_165 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_166 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; customerInfos = &lt;/font&gt;&lt;SPAN id=b5i_167 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; cust &lt;/font&gt;&lt;SPAN id=b5i_168 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; customers, ord &lt;/font&gt;&lt;SPAN id=b5i_169 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; cust.Orders _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_170 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_171 style="COLOR: blue"&gt;                    Select&lt;/SPAN&gt;&lt;font size="2"&gt; Customer = cust, Order = ord&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_172 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_173 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_174 style="COLOR: blue"&gt;For&lt;/SPAN&gt; &lt;SPAN id=b5i_175 style="COLOR: blue"&gt;Each&lt;/SPAN&gt;&lt;font size="2"&gt; custInfo &lt;/font&gt;&lt;SPAN id=b5i_176 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; customerInfos&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_177 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;    Console.WriteLine(&lt;/font&gt;&lt;SPAN id=b5i_178 style="COLOR: #a31515"&gt;"Customer Name: "&lt;/SPAN&gt;&lt;font size="2"&gt; &amp;amp; _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_179 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;    custInfo.Customer.LastName &amp;amp; &lt;/font&gt;&lt;SPAN id=b5i_180 style="COLOR: #a31515"&gt;", "&lt;/SPAN&gt;&lt;font size="2"&gt; &amp;amp; _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_181 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;    custInfo.Customer.FirstName)&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_182 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;    Console.WriteLine(&lt;/font&gt;&lt;SPAN id=b5i_183 style="COLOR: #a31515"&gt;"Order Date: "&lt;/SPAN&gt;&lt;font size="2"&gt; &amp;amp; custInfo.Order.OrderDate)&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_184 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_185 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;Next&lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_186&gt;    同样，一切都在意料之中。通过将每个完整的对象纳入我们的结果，我们必须废弃这些对象，以获得我们想使用的特定字段。请注意，我们会在 For Each 循环内部将名和姓连接起来。我们会教您一个更深一层的小技巧。如果您要考虑查询时可用的成员，您可以做一些相当酷的操作。例如，请考虑下面这个代码：&lt;/P&gt; &lt;BLOCKQUOTE id=txxf style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_187 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_188 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; customerInfos_2 = &lt;/font&gt;&lt;SPAN id=b5i_189 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; cust &lt;/font&gt;&lt;SPAN id=b5i_190 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; customers, ord &lt;/font&gt;&lt;SPAN id=b5i_191 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; cust.Orders _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_192 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_193 style="COLOR: blue"&gt;                      Select&lt;/SPAN&gt;&lt;font size="2"&gt; Customer = cust, Order = ord&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_194 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;Console.WriteLine(&lt;/font&gt;&lt;SPAN id=b5i_195 style="COLOR: #a31515"&gt;"There are "&lt;/SPAN&gt;&lt;font size="2"&gt; &amp;amp; customerInfos.Count &amp;amp; _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_196 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_197 style="COLOR: #a31515"&gt;                  " customer orders"&lt;/SPAN&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_198&gt;    这个示例对查询结果直接使用了 Count，以查看有多少项结果。我们不会进入您可在集合找到的所有成员，但是请不要忘记试试您可以对结果集执行何种操作。同时也请注意，这些成员对由查询产生的所有集合都是可用的。如果您猜测到这意味着这些成员必须要在 IEnumerable(Of T) 上，您就猜对了；甚至连它们的实现也必须在 IEnumerable(Of T) 上进行。这是一个被称作扩展方法的新功能。关于如何执行查询，有一个概念您必须了解，那就是延迟执行。在延迟执行中，直到它被实际使用时才会尝试检索查询的数据。这一点很重要，因为它允许您在不同的部分编写查询，而不需要多次调用底层数据源，同时还存在巨大的性能优势，特别是在根据数据库访问信息时（在这种情况下应特别避免多次调用）。这意味着，查询的声明实际上不会检索这些数据；只执行需要数据的操作会导致检索这些数据。您将可能执行的操作最常见的就是遍历查询。但是其他可能的操作还包括通过显示数据或尝试使用一种方法（如 Count）来查找查询的条目数。图 2 显示了执行数据检索的地方。&lt;/P&gt; &lt;P id=b5i_199&gt; &lt;/P&gt; &lt;H3 id=b5i_200&gt;&lt;A id=z-l3 name=使用_Where_子句筛选&gt;&lt;/A&gt;使用 Where 子句筛选&lt;/H3&gt; &lt;P id=b5i_201&gt;    Where 子句通过允许根据特定条件筛选使您的查询变得更加强大。Where 子句的用法与 If 语句非常相似。即在 If 语句中可能出现的情况，在 Where 子句中也可能出现： &lt;/P&gt; &lt;BLOCKQUOTE id=b5i_202 style="BACKGROUND-COLOR: #cccccc"&gt;Where &amp;lt;condition&amp;gt;&lt;/BLOCKQUOTE&gt; &lt;BLOCKQUOTE id=i6fb style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_203 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_204 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; evens = &lt;/font&gt;&lt;SPAN id=b5i_205 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; num &lt;/font&gt;&lt;SPAN id=b5i_206 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; numbers _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_207 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_208 style="COLOR: blue"&gt;            Where&lt;/SPAN&gt;&lt;font size="2"&gt; num &lt;/font&gt;&lt;SPAN id=b5i_209 style="COLOR: blue"&gt;Mod&lt;/SPAN&gt;&lt;font size="2"&gt; 2 = 0 _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_210 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_211 style="COLOR: blue"&gt;            Select&lt;/SPAN&gt;&lt;font size="2"&gt; num&lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_212&gt;    请注意这个集合称为“evens”，与上一示例中的一样。与上一个示例不同的是，它仅包含偶数数字。当您遍历结果时，您只能得到偶数结果：&lt;/P&gt; &lt;BLOCKQUOTE id=omzq style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_213 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_214 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; mids = &lt;/font&gt;&lt;SPAN id=b5i_215 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; num &lt;/font&gt;&lt;SPAN id=b5i_216 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; numbers _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_217 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_218 style="COLOR: blue"&gt;           Where&lt;/SPAN&gt;&lt;font size="2"&gt; num &amp;gt; 10 &lt;/font&gt;&lt;SPAN id=b5i_219 style="COLOR: blue"&gt;And&lt;/SPAN&gt;&lt;font size="2"&gt; num &amp;lt; 50 _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_220 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_221 style="COLOR: blue"&gt;           Select&lt;/SPAN&gt;&lt;font size="2"&gt; num&lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_222&gt;    Where 子句的优点就在于它很简单。您的 &amp;lt;condition&amp;gt; 可以是您选择的任何条件。让我们看一下它如何处理更棘手的查询：&lt;/P&gt; &lt;BLOCKQUOTE id=q8eu style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_223 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_224 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; seattleCustomers = &lt;/font&gt;&lt;SPAN id=b5i_225 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; cust &lt;/font&gt;&lt;SPAN id=b5i_226 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; customers, ord &lt;/font&gt;&lt;SPAN id=b5i_227 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; cust.Orders _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_228 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_229 style="COLOR: blue"&gt;                       Where&lt;/SPAN&gt;&lt;font size="2"&gt; cust.City = &lt;/font&gt;&lt;SPAN id=b5i_230 style="COLOR: #a31515"&gt;"Seattle"&lt;/SPAN&gt;&lt;font size="2"&gt; _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_231 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_232 style="COLOR: blue"&gt;                       Select&lt;/SPAN&gt;&lt;font size="2"&gt; Customer = cust, Order = ord&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_233 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_234 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_235 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; seattle2003Orders = &lt;/font&gt;&lt;SPAN id=b5i_236 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; cust &lt;/font&gt;&lt;SPAN id=b5i_237 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; customers, ord &lt;/font&gt;&lt;SPAN id=b5i_238 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; cust.Orders _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_239 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_240 style="COLOR: blue"&gt;                        Where&lt;/SPAN&gt;&lt;font size="2"&gt; cust.City = &lt;/font&gt;&lt;SPAN id=b5i_241 style="COLOR: #a31515"&gt;"Seattle"&lt;/SPAN&gt;&lt;font size="2"&gt; _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_242 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_243 style="COLOR: blue"&gt;                        And&lt;/SPAN&gt;&lt;font size="2"&gt; ord.OrderDate.Year = 2003 _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_244 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_245 style="COLOR: blue"&gt;                        Select&lt;/SPAN&gt;&lt;font size="2"&gt; Customer = cust, Order = ord&lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_246&gt;    有时候您可能会想要按一个字段来进行筛选，并选择一个（或多个）不同的字段。这非常简单：&lt;/P&gt; &lt;BLOCKQUOTE id=ujra style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_247 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_248 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; dallas2005Orders = &lt;/font&gt;&lt;SPAN id=b5i_249 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; cust &lt;/font&gt;&lt;SPAN id=b5i_250 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; customers, ord &lt;/font&gt;&lt;SPAN id=b5i_251 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; cust.Orders _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_252 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_253 style="COLOR: blue"&gt;                       Where&lt;/SPAN&gt;&lt;font size="2"&gt; cust.City = &lt;/font&gt;&lt;SPAN id=b5i_254 style="COLOR: #a31515"&gt;"Dallas"&lt;/SPAN&gt;&lt;font size="2"&gt; _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_255 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_256 style="COLOR: blue"&gt;                       And&lt;/SPAN&gt;&lt;font size="2"&gt; ord.OrderDate.Year = 2005 _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_257 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_258 style="COLOR: blue"&gt;                       Select&lt;/SPAN&gt;&lt;font size="2"&gt; cust.CustomerID, ord.OrderID&lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_259&gt;    一旦您声明了 From 子句，则其他子句的顺序就是可选的，您可以按照您喜欢的任何顺序使用它们：&lt;/P&gt; &lt;BLOCKQUOTE id=bki4 style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_260 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_261 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; seattle2003Orders = &lt;/font&gt;&lt;SPAN id=b5i_262 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; cust &lt;/font&gt;&lt;SPAN id=b5i_263 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; customers, ord &lt;/font&gt;&lt;SPAN id=b5i_264 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; cust.Orders _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_265 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_266 style="COLOR: blue"&gt;                        Select&lt;/SPAN&gt;&lt;font size="2"&gt; Customer = cust, Order = ord _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_267 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_268 style="COLOR: blue"&gt;                        Where&lt;/SPAN&gt;&lt;font size="2"&gt; Customer.City = &lt;/font&gt;&lt;SPAN id=b5i_269 style="COLOR: #a31515"&gt;"Seattle"&lt;/SPAN&gt;&lt;font size="2"&gt; _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_270 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_271 style="COLOR: blue"&gt;                        And&lt;/SPAN&gt;&lt;font size="2"&gt; Order.OrderDate.Year = 2003           &lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_272&gt;    请比较一下这个示例和上述相同名称的示例。请注意，我们已将 Select 子句移到了 Where 子句之前，这是完全可以接受的。但是也请注意，Where 子句必须进行细微的更改，现在提到的是 Customer 和 Order，而不是 cust 和 ord。请特别注意，Select 子句是重新确定作用域的子句，这样在 Select 子句之后的任何子句就仅可以看到 Select 公开的内容，这意味着该代码将无效：&lt;/P&gt; &lt;BLOCKQUOTE id=o-32 style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_273 style=" MARGIN: 0in; COLOR: green; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;' This won’t compile&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_274 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_275 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; dallas2005Orders = &lt;/font&gt;&lt;SPAN id=b5i_276 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; cust &lt;/font&gt;&lt;SPAN id=b5i_277 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; customers, ord &lt;/font&gt;&lt;SPAN id=b5i_278 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; cust.Orders _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_279 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_280 style="COLOR: blue"&gt;                       Select&lt;/SPAN&gt;&lt;font size="2"&gt; cust.CustomerID, ord.OrderID _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_281 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_282 style="COLOR: blue"&gt;                       Where&lt;/SPAN&gt;&lt;font size="2"&gt; cust.City = &lt;/font&gt;&lt;SPAN id=b5i_283 style="COLOR: #a31515"&gt;"Dallas"&lt;/SPAN&gt;&lt;font size="2"&gt; _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_284 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_285 style="COLOR: blue"&gt;                       And&lt;/SPAN&gt;&lt;font size="2"&gt; ord.OrderDate.Year = 2005&lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_286&gt;    我们在 Where 子句内部提到了 ord 和 cust，但是现在 Where 在 Select 的后面，因此这两个变量就不见了。Select 之后，我们所留下的是具有 CustomerID 和 OrderID 这两个属性的匿名类型。该代码可以被更改，如下所示：&lt;/P&gt; &lt;BLOCKQUOTE id=fbkw style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_287 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_288 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; dallas2005Orders = &lt;/font&gt;&lt;SPAN id=b5i_289 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; cust &lt;/font&gt;&lt;SPAN id=b5i_290 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; customers, ord &lt;/font&gt;&lt;SPAN id=b5i_291 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; cust.Orders _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_292 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_293 style="COLOR: blue"&gt;                       Select&lt;/SPAN&gt;&lt;font size="2"&gt; cust.CustomerID, ord.OrderID, _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_294 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;                              cust.City, ord.OrderDate _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_295 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_296 style="COLOR: blue"&gt;                       Where&lt;/SPAN&gt;&lt;font size="2"&gt; City = &lt;/font&gt;&lt;SPAN id=b5i_297 style="COLOR: #a31515"&gt;"Dallas"&lt;/SPAN&gt;&lt;font size="2"&gt; _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_298 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_299 style="COLOR: blue"&gt;                       And&lt;/SPAN&gt;&lt;font size="2"&gt; OrderDate.Year = 2005&lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_300&gt;    请注意许多子句，包括 Where 和 Order By，都不会重新确定可用变量的作用域。&lt;/P&gt; &lt;P id=b5i_301&gt; &lt;/P&gt; &lt;H3 id=b5i_302&gt;&lt;A id=htg3 name=使用_Order_By_排序&gt;&lt;/A&gt;使用 Order By 排序&lt;/H3&gt; &lt;P id=b5i_303&gt;    Order By 是任何查询的基本子句之一。Order By 将查询结果按指定的一个或多个字段进行排序：&lt;/P&gt; &lt;BLOCKQUOTE id=b5i_304 style="BACKGROUND-COLOR: #cccccc"&gt;Order By &amp;lt;query variable&amp;gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_305&gt;    这是最简单的 Order By。如果没有指定任何顺序方向，则假定您是想按升序的顺序查看结果。下面是一个使用中的子句：&lt;/P&gt; &lt;BLOCKQUOTE id=zpdv style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_306 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_307 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; nums = &lt;/font&gt;&lt;SPAN id=b5i_308 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; num &lt;/font&gt;&lt;SPAN id=b5i_309 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; numbers _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_310 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_311 style="COLOR: blue"&gt;           Order&lt;/SPAN&gt; &lt;SPAN id=b5i_312 style="COLOR: blue"&gt;By&lt;/SPAN&gt;&lt;font size="2"&gt; num _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_313 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_314 style="COLOR: blue"&gt;           Select&lt;/SPAN&gt;&lt;font size="2"&gt; num&lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_315&gt;    Order By 的下一个变体几乎与第一个变体完全相同。它假设您是想要 Order By 变量内部的一个字段，而不是变量本身：&lt;/P&gt; &lt;BLOCKQUOTE id=b5i_316 style="BACKGROUND-COLOR: #cccccc"&gt;Order By &amp;lt;field1&amp;gt;, &amp;lt;field2&amp;gt;, ...&lt;/BLOCKQUOTE&gt; &lt;BLOCKQUOTE id=ahvo style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_317 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_318 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; customerInfos1 = &lt;/font&gt;&lt;SPAN id=b5i_319 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; cust &lt;/font&gt;&lt;SPAN id=b5i_320 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; customers, ord &lt;/font&gt;&lt;SPAN id=b5i_321 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; cust.Orders _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_322 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_323 style="COLOR: blue"&gt;                     Order&lt;/SPAN&gt; &lt;SPAN id=b5i_324 style="COLOR: blue"&gt;By&lt;/SPAN&gt;&lt;font size="2"&gt; cust.City _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_325 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_326 style="COLOR: blue"&gt;                     Select&lt;/SPAN&gt;&lt;font size="2"&gt; Customer = cust, Order = ord&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_327 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_328 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_329 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; customerInfos2 = &lt;/font&gt;&lt;SPAN id=b5i_330 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; cust &lt;/font&gt;&lt;SPAN id=b5i_331 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; customers, ord &lt;/font&gt;&lt;SPAN id=b5i_332 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; cust.Orders _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_333 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_334 style="COLOR: blue"&gt;                     Order&lt;/SPAN&gt; &lt;SPAN id=b5i_335 style="COLOR: blue"&gt;By&lt;/SPAN&gt;&lt;font size="2"&gt; cust.City, ord.OrderDate _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_336 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_337 style="COLOR: blue"&gt;                     Select&lt;/SPAN&gt;&lt;font size="2"&gt; Customer = cust, Order = ord&lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_338&gt;    最好选择一个或多个字段。此外，因为 Order By 不会重新确定可用变量的作用域，所以下列 Select 子句可以使用前一作用域中可用的任何变量：&lt;/P&gt; &lt;BLOCKQUOTE id=b5i_339 style="BACKGROUND-COLOR: #cccccc"&gt;Order By &amp;lt;var1&amp;gt; [Ascending/Descending], _&lt;BR id=b5i_340&gt;              &amp;lt;var2&amp;gt; [Ascending/Descending], ...&lt;/BLOCKQUOTE&gt; &lt;BLOCKQUOTE id=mbtw style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_341 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_342 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; customerInfos = &lt;/font&gt;&lt;SPAN id=b5i_343 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; cust &lt;/font&gt;&lt;SPAN id=b5i_344 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; customers, ord &lt;/font&gt;&lt;SPAN id=b5i_345 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; cust.Orders _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_346 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_347 style="COLOR: blue"&gt;                    Order&lt;/SPAN&gt; &lt;SPAN id=b5i_348 style="COLOR: blue"&gt;By&lt;/SPAN&gt;&lt;font size="2"&gt; cust.City &lt;/font&gt;&lt;SPAN id=b5i_349 style="COLOR: blue"&gt;Descending&lt;/SPAN&gt;&lt;font size="2"&gt;, ord.OrderDate _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_350 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_351 style="COLOR: blue"&gt;                    Select&lt;/SPAN&gt;&lt;font size="2"&gt; Customer = cust, Order = ord&lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_352&gt;    这充分使用了 Order By。我们忽略了第二列的方向，但是它仍包含在第一列，这意味着我们先按城市以降序排序，然后再按订单日期以升序排序。当然，您可以将 Order By 和 Where 结合起来，我们以几个示例结束对该子句的介绍：&lt;/P&gt; &lt;BLOCKQUOTE id=pq5n style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_353 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_354 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; orderedEvens = &lt;/font&gt;&lt;SPAN id=b5i_355 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; num &lt;/font&gt;&lt;SPAN id=b5i_356 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; numbers _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_357 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_358 style="COLOR: blue"&gt;                   Where&lt;/SPAN&gt;&lt;font size="2"&gt; num &lt;/font&gt;&lt;SPAN id=b5i_359 style="COLOR: blue"&gt;Mod&lt;/SPAN&gt;&lt;font size="2"&gt; 2 = 0 _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_360 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_361 style="COLOR: blue"&gt;                   Order&lt;/SPAN&gt; &lt;SPAN id=b5i_362 style="COLOR: blue"&gt;By&lt;/SPAN&gt;&lt;font size="2"&gt; num _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_363 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_364 style="COLOR: blue"&gt;                   Select&lt;/SPAN&gt;&lt;font size="2"&gt; num&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_365 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_366 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_367 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; seattleCustomers = &lt;/font&gt;&lt;SPAN id=b5i_368 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; cust &lt;/font&gt;&lt;SPAN id=b5i_369 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; customers, ord &lt;/font&gt;&lt;SPAN id=b5i_370 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; cust.Orders _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_371 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_372 style="COLOR: blue"&gt;                       Order&lt;/SPAN&gt; &lt;SPAN id=b5i_373 style="COLOR: blue"&gt;By&lt;/SPAN&gt;&lt;font size="2"&gt; cust.City &lt;/font&gt;&lt;SPAN id=b5i_374 style="COLOR: blue"&gt;Descending&lt;/SPAN&gt;&lt;font size="2"&gt;, ord.OrderDate _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_375 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_376 style="COLOR: blue"&gt;                       Where&lt;/SPAN&gt;&lt;font size="2"&gt; cust.City = &lt;/font&gt;&lt;SPAN id=b5i_377 style="COLOR: #a31515"&gt;"Dallas"&lt;/SPAN&gt;&lt;font size="2"&gt; _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_378 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_379 style="COLOR: blue"&gt;                       And&lt;/SPAN&gt;&lt;font size="2"&gt; ord.OrderDate.Year = 2005 _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_380 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_381 style="COLOR: blue"&gt;                       Select&lt;/SPAN&gt;&lt;font size="2"&gt; Name = cust.LastName &amp;amp; &lt;/font&gt;&lt;SPAN id=b5i_382 style="COLOR: #a31515"&gt;", "&lt;/SPAN&gt;&lt;font size="2"&gt; &amp;amp; _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_383 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;                       cust.FirstName, ord.OrderDate &lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_384&gt; &lt;/P&gt; &lt;H3 id=b5i_385&gt;&lt;A id=une4 name=更多子句&gt;&lt;/A&gt;更多子句&lt;/H3&gt; &lt;P id=b5i_386&gt;    其他可用的子句在其他文章中讨论，但是仍支持许多标准查询功能，因为本文还包含一些类似的子句。例如，支持联接、聚合和分组功能。您在上面的示例中已经看到隐式联接，而显式联接可以通过使用 Join 关键字执行。可以使用 Aggregate 子句支持聚合信息功能，而分组功能则可使用 Group By 子句和预先提供的聚合方法（如 Sum 或 Average）之组合来予以支持（尽管您始终可以创建和使用自己的组合）。诸如插入、更新和删除等标准查询功能均可获得支持，只是它们并非直接来自查询语法。&lt;/P&gt; &lt;P id=b5i_387&gt; &lt;/P&gt; &lt;H3 id=b5i_388&gt;&lt;A id=fxl8 name=摘要&gt;&lt;/A&gt;摘要&lt;/H3&gt; &lt;P id=b5i_389&gt;    LINQ 提供了基本查询功能，包括指定源 (From)、识别要返回的数据 (Select)、筛选 (Where) 和排序 (Order By)。同时还提供可以对您的数据集进行分组、联接或聚合的高级查询功能。有了这些功能，又能得到其他功能（如匿名类型或类型推断）的支持，您便完全可以直接使用 Visual Basic 代码来编写类似 SQL 的查询。&lt;/P&gt; &lt;P id=b5i_390&gt; &lt;/P&gt; &lt;P id=b5i_391&gt; &lt;/P&gt; &lt;H3 id=b5i_392&gt;附件&lt;/H3&gt; &lt;P id=b5i_393&gt;     &lt;A id=sca: name=图1&gt;&lt;/A&gt;图1&lt;/P&gt; &lt;BLOCKQUOTE id=j65q style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_394 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;   &lt;P id=b5i_395 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt;   &lt;P id=b5i_396&gt; &lt;/P&gt; &lt;P id=b5i_397 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_398 style="COLOR: blue"&gt;Public&lt;/SPAN&gt;&lt;font size="2"&gt; customers &lt;/font&gt;&lt;SPAN id=b5i_399 style="COLOR: blue"&gt;As&lt;/SPAN&gt;&lt;font size="2"&gt; List(&lt;/font&gt;&lt;SPAN id=b5i_400 style="COLOR: blue"&gt;Of&lt;/SPAN&gt;&lt;font size="2"&gt; Customer)&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_401 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_402 style="COLOR: blue"&gt;Public&lt;/SPAN&gt;&lt;font size="2"&gt; orders &lt;/font&gt;&lt;SPAN id=b5i_403 style="COLOR: blue"&gt;As&lt;/SPAN&gt;&lt;font size="2"&gt; List(&lt;/font&gt;&lt;SPAN id=b5i_404 style="COLOR: blue"&gt;Of&lt;/SPAN&gt;&lt;font size="2"&gt; Order)&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_405 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_406 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_407 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_408 style="COLOR: blue"&gt;Public&lt;/SPAN&gt; &lt;SPAN id=b5i_409 style="COLOR: blue"&gt;Class&lt;/SPAN&gt;&lt;font size="2"&gt; Customer&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_410 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_411 style="COLOR: blue"&gt;    Public&lt;/SPAN&gt; &lt;SPAN id=b5i_412 style="COLOR: blue"&gt;Property&lt;/SPAN&gt;&lt;font size="2"&gt; CustomerID() &lt;/font&gt;&lt;SPAN id=b5i_413 style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN id=b5i_414 style="COLOR: blue"&gt;Integer&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_415 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;        Get&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_416 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt;             &lt;/P&gt; &lt;P id=b5i_417 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_418 style="COLOR: blue"&gt;        End&lt;/SPAN&gt; &lt;SPAN id=b5i_419 style="COLOR: blue"&gt;Get&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_420 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_421 style="COLOR: blue"&gt;        Set&lt;/SPAN&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;SPAN id=b5i_422 style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt;&lt;font size="2"&gt; value &lt;/font&gt;&lt;SPAN id=b5i_423 style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN id=b5i_424 style="COLOR: blue"&gt;Integer&lt;/SPAN&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_425 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_426 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_427 style="COLOR: blue"&gt;        End&lt;/SPAN&gt; &lt;SPAN id=b5i_428 style="COLOR: blue"&gt;Set&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_429 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_430 style="COLOR: blue"&gt;    End&lt;/SPAN&gt; &lt;SPAN id=b5i_431 style="COLOR: blue"&gt;Property&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_432 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_433 style="COLOR: blue"&gt;    Public&lt;/SPAN&gt; &lt;SPAN id=b5i_434 style="COLOR: blue"&gt;Property&lt;/SPAN&gt;&lt;font size="2"&gt; FirstName() &lt;/font&gt;&lt;SPAN id=b5i_435 style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN id=b5i_436 style="COLOR: blue"&gt;String&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_437 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;        Get&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_438 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_439 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_440 style="COLOR: blue"&gt;        End&lt;/SPAN&gt; &lt;SPAN id=b5i_441 style="COLOR: blue"&gt;Get&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_442 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_443 style="COLOR: blue"&gt;        Set&lt;/SPAN&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;SPAN id=b5i_444 style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt;&lt;font size="2"&gt; value &lt;/font&gt;&lt;SPAN id=b5i_445 style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN id=b5i_446 style="COLOR: blue"&gt;String&lt;/SPAN&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_447 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_448 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_449 style="COLOR: blue"&gt;        End&lt;/SPAN&gt; &lt;SPAN id=b5i_450 style="COLOR: blue"&gt;Set&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_451 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_452 style="COLOR: blue"&gt;    End&lt;/SPAN&gt; &lt;SPAN id=b5i_453 style="COLOR: blue"&gt;Property&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_454 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_455 style="COLOR: blue"&gt;    Public&lt;/SPAN&gt; &lt;SPAN id=b5i_456 style="COLOR: blue"&gt;Property&lt;/SPAN&gt;&lt;font size="2"&gt; LastName() &lt;/font&gt;&lt;SPAN id=b5i_457 style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN id=b5i_458 style="COLOR: blue"&gt;String&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_459 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;        Get&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_460 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_461 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_462 style="COLOR: blue"&gt;        End&lt;/SPAN&gt; &lt;SPAN id=b5i_463 style="COLOR: blue"&gt;Get&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_464 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_465 style="COLOR: blue"&gt;        Set&lt;/SPAN&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;SPAN id=b5i_466 style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt;&lt;font size="2"&gt; value &lt;/font&gt;&lt;SPAN id=b5i_467 style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN id=b5i_468 style="COLOR: blue"&gt;String&lt;/SPAN&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_469 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_470 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_471 style="COLOR: blue"&gt;        End&lt;/SPAN&gt; &lt;SPAN id=b5i_472 style="COLOR: blue"&gt;Set&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_473 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_474 style="COLOR: blue"&gt;    End&lt;/SPAN&gt; &lt;SPAN id=b5i_475 style="COLOR: blue"&gt;Property&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_476 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_477 style="COLOR: blue"&gt;    Public&lt;/SPAN&gt; &lt;SPAN id=b5i_478 style="COLOR: blue"&gt;Property&lt;/SPAN&gt;&lt;font size="2"&gt; City() &lt;/font&gt;&lt;SPAN id=b5i_479 style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN id=b5i_480 style="COLOR: blue"&gt;String&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_481 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;        Get&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_482 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_483 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_484 style="COLOR: blue"&gt;        End&lt;/SPAN&gt; &lt;SPAN id=b5i_485 style="COLOR: blue"&gt;Get&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_486 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_487 style="COLOR: blue"&gt;        Set&lt;/SPAN&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;SPAN id=b5i_488 style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt;&lt;font size="2"&gt; value &lt;/font&gt;&lt;SPAN id=b5i_489 style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN id=b5i_490 style="COLOR: blue"&gt;String&lt;/SPAN&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_491 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_492 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_493 style="COLOR: blue"&gt;        End&lt;/SPAN&gt; &lt;SPAN id=b5i_494 style="COLOR: blue"&gt;Set&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_495 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt;    &lt;SPAN id=b5i_496 style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN id=b5i_497 style="COLOR: blue"&gt;Property&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_498 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_499 style="COLOR: blue"&gt;    Public&lt;/SPAN&gt; &lt;SPAN id=b5i_500 style="COLOR: blue"&gt;Property&lt;/SPAN&gt;&lt;font size="2"&gt; Orders() &lt;/font&gt;&lt;SPAN id=b5i_501 style="COLOR: blue"&gt;As&lt;/SPAN&gt;&lt;font size="2"&gt; List(&lt;/font&gt;&lt;SPAN id=b5i_502 style="COLOR: blue"&gt;Of&lt;/SPAN&gt;&lt;font size="2"&gt; Order)&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_503 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;        Get&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_504 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt;     &lt;/P&gt; &lt;P id=b5i_505 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_506 style="COLOR: blue"&gt;        End&lt;/SPAN&gt; &lt;SPAN id=b5i_507 style="COLOR: blue"&gt;Get&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_508 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_509 style="COLOR: blue"&gt;        Set&lt;/SPAN&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;SPAN id=b5i_510 style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt;&lt;font size="2"&gt; value &lt;/font&gt;&lt;SPAN id=b5i_511 style="COLOR: blue"&gt;As&lt;/SPAN&gt;&lt;font size="2"&gt; List(&lt;/font&gt;&lt;SPAN id=b5i_512 style="COLOR: blue"&gt;Of&lt;/SPAN&gt;&lt;font size="2"&gt; Order))&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_513 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_514 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_515 style="COLOR: blue"&gt;        End&lt;/SPAN&gt; &lt;SPAN id=b5i_516 style="COLOR: blue"&gt;Set&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_517 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_518 style="COLOR: blue"&gt;    End&lt;/SPAN&gt; &lt;SPAN id=b5i_519 style="COLOR: blue"&gt;Property&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_520 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_521 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_522 style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN id=b5i_523 style="COLOR: blue"&gt;Class&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_524 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_525 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_526 style="COLOR: blue"&gt;Public&lt;/SPAN&gt; &lt;SPAN id=b5i_527 style="COLOR: blue"&gt;Class&lt;/SPAN&gt;&lt;font size="2"&gt; Order&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_528 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_529 style="COLOR: blue"&gt;    Public&lt;/SPAN&gt; &lt;SPAN id=b5i_530 style="COLOR: blue"&gt;Property&lt;/SPAN&gt;&lt;font size="2"&gt; OrderID() &lt;/font&gt;&lt;SPAN id=b5i_531 style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN id=b5i_532 style="COLOR: blue"&gt;Integer&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_533 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;        Get&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_534 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_535 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_536 style="COLOR: blue"&gt;        End&lt;/SPAN&gt; &lt;SPAN id=b5i_537 style="COLOR: blue"&gt;Get&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_538 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_539 style="COLOR: blue"&gt;        Set&lt;/SPAN&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;SPAN id=b5i_540 style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt;&lt;font size="2"&gt; value &lt;/font&gt;&lt;SPAN id=b5i_541 style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN id=b5i_542 style="COLOR: blue"&gt;Integer&lt;/SPAN&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_543 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_544 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_545 style="COLOR: blue"&gt;        End&lt;/SPAN&gt; &lt;SPAN id=b5i_546 style="COLOR: blue"&gt;Set&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_547 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_548 style="COLOR: blue"&gt;    End&lt;/SPAN&gt; &lt;SPAN id=b5i_549 style="COLOR: blue"&gt;Property&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_550 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_551 style="COLOR: blue"&gt;    Public&lt;/SPAN&gt; &lt;SPAN id=b5i_552 style="COLOR: blue"&gt;Property&lt;/SPAN&gt;&lt;font size="2"&gt; CustomerID() &lt;/font&gt;&lt;SPAN id=b5i_553 style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN id=b5i_554 style="COLOR: blue"&gt;Integer&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_555 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;        Get&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_556 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_557 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_558 style="COLOR: blue"&gt;        End&lt;/SPAN&gt; &lt;SPAN id=b5i_559 style="COLOR: blue"&gt;Get&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_560 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_561 style="COLOR: blue"&gt;        Set&lt;/SPAN&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;SPAN id=b5i_562 style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt;&lt;font size="2"&gt; value &lt;/font&gt;&lt;SPAN id=b5i_563 style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN id=b5i_564 style="COLOR: blue"&gt;Integer&lt;/SPAN&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_565 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_566 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_567 style="COLOR: blue"&gt;        End&lt;/SPAN&gt; &lt;SPAN id=b5i_568 style="COLOR: blue"&gt;Set&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_569 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_570 style="COLOR: blue"&gt;    End&lt;/SPAN&gt; &lt;SPAN id=b5i_571 style="COLOR: blue"&gt;Property&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_572 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_573 style="COLOR: blue"&gt;    Public&lt;/SPAN&gt; &lt;SPAN id=b5i_574 style="COLOR: blue"&gt;Property&lt;/SPAN&gt;&lt;font size="2"&gt; OrderDate() &lt;/font&gt;&lt;SPAN id=b5i_575 style="COLOR: blue"&gt;As&lt;/SPAN&gt;&lt;font size="2"&gt; DateTime&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_576 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;        Get&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_577 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_578 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_579 style="COLOR: blue"&gt;        End&lt;/SPAN&gt; &lt;SPAN id=b5i_580 style="COLOR: blue"&gt;Get&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_581 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_582 style="COLOR: blue"&gt;        Set&lt;/SPAN&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;SPAN id=b5i_583 style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt;&lt;font size="2"&gt; value &lt;/font&gt;&lt;SPAN id=b5i_584 style="COLOR: blue"&gt;As&lt;/SPAN&gt;&lt;font size="2"&gt; DateTime)&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_585 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_586 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_587 style="COLOR: blue"&gt;        End&lt;/SPAN&gt; &lt;SPAN id=b5i_588 style="COLOR: blue"&gt;Set&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_589 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_590 style="COLOR: blue"&gt;    End&lt;/SPAN&gt; &lt;SPAN id=b5i_591 style="COLOR: blue"&gt;Property&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_592 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_593 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_594 style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN id=b5i_595 style="COLOR: blue"&gt;Class&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_596&gt;     &lt;A id=nseh name=图2&gt;&lt;/A&gt;图2&lt;/P&gt; &lt;BLOCKQUOTE id=r70p style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P id=b5i_598 style=" MARGIN: 0in; COLOR: green; FONT-FAMILY: 新宋体"&gt;'Figure 2 在 For Each 子句中检索到的数据&lt;/P&gt; &lt;P id=b5i_603 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_604 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; seattleCustomers = &lt;/font&gt;&lt;SPAN id=b5i_605 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; cust &lt;/font&gt;&lt;SPAN id=b5i_606 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; customers _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_607 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_608 style="COLOR: blue"&gt;                       Where&lt;/SPAN&gt;&lt;font size="2"&gt; cust.City = &lt;/font&gt;&lt;SPAN id=b5i_609 style="COLOR: #a31515"&gt;"Seattle"&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=b5i_610 style=" MARGIN: 0in; COLOR: #a31515; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_611 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_612 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; recentOrders = &lt;/font&gt;&lt;SPAN id=b5i_613 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; ord &lt;/font&gt;&lt;SPAN id=b5i_614 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; orders _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_615 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_616 style="COLOR: blue"&gt;                   Where&lt;/SPAN&gt;&lt;font size="2"&gt; ord.OrderDate.Year = 2007&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_617 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_618 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_619 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;font size="2"&gt; custInfos = &lt;/font&gt;&lt;SPAN id=b5i_620 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;font size="2"&gt; cust &lt;/font&gt;&lt;SPAN id=b5i_621 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; seattleCustomers, ord &lt;/font&gt;&lt;SPAN id=b5i_622 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; recentOrders _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_623 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_624 style="COLOR: blue"&gt;                Where&lt;/SPAN&gt;&lt;font size="2"&gt; cust.CustomerID = ord.OrderID _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_625 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_626 style="COLOR: blue"&gt;                Select&lt;/SPAN&gt;&lt;font size="2"&gt; Name = cust.LastName &amp;amp; &lt;/font&gt;&lt;SPAN id=b5i_627 style="COLOR: #a31515"&gt;", "&lt;/SPAN&gt;&lt;font size="2"&gt; &amp;amp; cust.FirstName, _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_628 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;                       cust.CustomerID, ord.OrderDate _&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_629 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_630 style="COLOR: blue"&gt;                Order&lt;/SPAN&gt; &lt;SPAN id=b5i_631 style="COLOR: blue"&gt;By&lt;/SPAN&gt;&lt;font size="2"&gt; OrderDate &lt;/font&gt;&lt;SPAN id=b5i_632 style="COLOR: blue"&gt;Descending&lt;/SPAN&gt;&lt;font size="2"&gt;, Name&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_633 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_634 style=" MARGIN: 0in; COLOR: green; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;' None of the above queries are run until this point.&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_635 style=" MARGIN: 0in; COLOR: green; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;' This means that the information is only retrieved once.&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_636 style=" MARGIN: 0in; FONT-FAMILY: 新宋体"&gt;&lt;SPAN id=b5i_637 style="COLOR: blue"&gt;For&lt;/SPAN&gt; &lt;SPAN id=b5i_638 style="COLOR: blue"&gt;Each&lt;/SPAN&gt;&lt;font size="2"&gt; custInfo &lt;/font&gt;&lt;SPAN id=b5i_639 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;font size="2"&gt; custInfos&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_640 style=" MARGIN: 0in; COLOR: green; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;' take action on the data here&lt;/font&gt;&lt;/P&gt; &lt;P id=b5i_641 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt;&lt;font size="2"&gt;Next&lt;/font&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=b5i_642 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_643 style=" MARGIN: 0in; COLOR: blue; FONT-FAMILY: 新宋体"&gt; &lt;/P&gt; &lt;P id=b5i_644&gt;&lt;BR id=b5i_645&gt; &lt;/P&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1539264213384076775-741070975024871590?l=blog.sonofvb.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SonOVB/~4/PchQxu06-NA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sonofvb.net/feeds/741070975024871590/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1539264213384076775&amp;postID=741070975024871590" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/741070975024871590?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/741070975024871590?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SonOVB/~3/PchQxu06-NA/visual-studioorcas-httpmsdn.html" title="" /><author><name>G yc{Son of VB.NET}</name><uri>http://www.blogger.com/profile/10642280584042013225</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14927754176143394902" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.sonofvb.net/2008/08/visual-studioorcas-httpmsdn.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEFSH06eip7ImA9WxdaGUg.&quot;"><id>tag:blogger.com,1999:blog-1539264213384076775.post-4581352850525957814</id><published>2008-08-29T03:00:00.000+08:00</published><updated>2008-08-29T03:10:19.312+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-29T03:10:19.312+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET 3.5" /><category scheme="http://www.blogger.com/atom/ns#" term="LINQ" /><title /><content type="html">&lt;H1 id=wds_&gt;转换VS2005项目到VS2008-开启LINQ（Converting VS 2005 Projects to VS 2008 - Enabling LINQ）&lt;/H1&gt; &lt;P id=wds_0&gt;&lt;FONT id=wds_1 size=1&gt;        原文地址：&lt;A id=wds_2 href="http://blogs.msdn.com/bethmassi/archive/2007/08/21/converting-vs-2005-projects-to-vs-2008.aspx"&gt;http://blogs.msdn.com/bethmassi/archive/2007/08/21/converting-vs-2005-projects-to-vs-2008.aspx&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P id=wds_3&gt;&lt;FONT id=wds_4 size=1&gt;        作者： &lt;A id=ctl00___ctl00___ctl01___Entry___AuthorLink href="http://blogs.msdn.com/user/Profile.aspx?UserID=74782"&gt;Beth Massi&lt;/A&gt; &lt;/FONT&gt;&lt;/P&gt; &lt;P id=wds_5&gt; &lt;/P&gt; &lt;P id=wds_6&gt;你有一个VS2005写的程序，你想转换它并使用在VS2008中的LINQ。在这里我将给主要的步骤，包括使LINQ工作时你可能要用到的提供器（Provider）。&lt;/P&gt; &lt;P id=wds_7&gt; &lt;/P&gt; &lt;P id=wds_9&gt;在Visual Studio 2008 中，新的多平台（multi-targeting）特性允许你工作在VS2008下却能够写出面向.NET 2.0,3.0,3.5平台的程序。&lt;A class="" id=wds_10 href="http://weblogs.asp.net/scottgu/archive/2007/06/20/vs-2008-multi-targeting-support.aspx" target=_blank&gt;ScottGu 有个很好的帖子&lt;/A&gt; 讨论这个和 &lt;A class="" id=wds_11 href="http://west-wind.com/weblog/posts/122975.aspx" target=_blank&gt;Rick Strahl&lt;/A&gt; 。这个意谓着你不需要在机器上安装多个版本的VS IDE来处理之前版本的.NET目标平台。（注意：如果你目标平台是.NET 1.0或1.1 那么你仍需要 2002或者 2003）这是一个好的消息不仅仅因为它能节省磁盘空间和上下文开关（context switching），它允许你利用新的调试工具和编辑器的好处不需要冒着升级当前项目的风险）。然而，当你希望升级项目到3.5，开始使用LINQ的优势，你需要自己手动导入一些新的命名空间。&lt;/P&gt; &lt;P id=g66m0&gt; &lt;/P&gt; &lt;P id=wds_17&gt;当你在VS2008中第一次打开VS2005写的项目的时候VS2008将会提示你升级项目。实际上是升级项目(.vbproj) 和解决方案(.sln) 文件兼容VS2008。项目文件实际仍向后兼容VS2005，所以你仍能打开它解决方案文件。而然他是单向的。所以如果你所在开发小组同时使用VS2005和VS2008 IDE时，你将需要2个解决方案文件，幸运的是你的项目文件（那些比项目文件更加经常变化的文件）可以共享。&lt;/P&gt; &lt;DIV id=bwr5&gt; &lt;/DIV&gt; &lt;DIV id=cbea&gt; &lt;/DIV&gt; &lt;P id=wds_21&gt;所谓的升级，仅仅是处理升级你的项目和解决方案文件，但你的程序的目标平台仍然.NET 2.0。在你升级完的程序里使用新特性像LINQ你需要更改目标平台和添加一些引用。你也会希望打开新的 Option Infer 特性。这个允许编译器推断本地变量类型声明通过评估右边表达式（right-hand side of the expression）。这将在编写LINQ查询时非常有用。现在，要更改目标框架，单击“高级编译选项”按钮 并更改目标平台在下拉框：&lt;/P&gt; &lt;P id=g66m2&gt; &lt;/P&gt; &lt;P id=wds_26&gt;&lt;IMG id=wds_27 style="WIDTH: 640px; HEIGHT: 461px" src="http://blogs.msdn.com/photos/bethmassi/images/4498999/640x461.aspx"&gt;&lt;/P&gt; &lt;P id=wds_28&gt; &lt;/P&gt; &lt;P id=wds_29&gt;选择 .NET Framework 3.5 ，单击 OK，然后项目将关闭并重新打开。如果你再一次打开项目属性并查看引用标签，你将注意到System.Core.dll 版本3.5 将自动引用进来。然而，要使用LINQ你仍需要导入一些LINQ依赖的命名空间和添加一些引用。要使用LINQ to Objcects，在选项标签下导入命名空间选择 System.Linq。现在你将能够编写面向对象的查询了，像是：&lt;/P&gt; &lt;P id=wds_30&gt;  &lt;/P&gt; &lt;BLOCKQUOTE id=ehz-&gt;&lt;SPAN id=wds_34 style="COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;FONT id=wds_35 size=1&gt;Dim&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=wds_36 style="FONT-FAMILY: 'Courier New'"&gt;&lt;FONT id=wds_37 size=1&gt; currentFiles = &lt;/FONT&gt;&lt;SPAN id=wds_38 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;FONT id=wds_39 size=1&gt; File &lt;/FONT&gt;&lt;SPAN id=wds_40 style="COLOR: blue"&gt;In&lt;/SPAN&gt; &lt;SPAN id=wds_41 style="COLOR: blue"&gt;My&lt;/SPAN&gt;&lt;FONT id=wds_42 size=1&gt;.Computer.FileSystem.GetFiles(CurDir) _ &lt;/FONT&gt;&lt;/SPAN&gt;  &lt;P class=MsoNormal id=wds_43 style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN id=wds_44 style="FONT-FAMILY: 'Courier New'"&gt;                   &lt;SPAN id=wds_45 style="COLOR: blue"&gt;Select&lt;/SPAN&gt; &lt;SPAN id=wds_46 style="COLOR: blue"&gt;My&lt;/SPAN&gt;&lt;FONT id=wds_47 size=1&gt;.Computer.FileSystem.GetFileInfo(File) &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=wds_48 style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=wds_49&gt; &lt;/P&gt; &lt;P id=wds_50&gt;&lt;SPAN id=wds_51 style="FONT-FAMILY: 'Courier New'"&gt;要使用工作在数据集上的查询，你需要引用&lt;FONT id=wds_52 face=Arial&gt;System.Data.DataSetExtensions 然后你需要重新运行数据集生成器。之后就可以写LINQ查询了在数据集上。像是右击数据集并单击“运行自定义工具（Run Custom Tool）”。这将产生数据集代码，所以那个数据表将从LINQ-Ready类名为TypedTableBase （在System.Data.DataSetExtension 命名空间下）继承。现在你将能够编写查询在类型化数据集上。例如，你可以写：&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P id=wds_53&gt; &lt;/P&gt; &lt;BLOCKQUOTE id=zoee&gt;&lt;SPAN id=g66m9 style="COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;FONT id=g66m10 size=1&gt;Dim&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=g66m11 style="FONT-FAMILY: 'Courier New'"&gt;&lt;FONT id=g66m12 size=1&gt; total = &lt;/FONT&gt;&lt;SPAN id=g66m13 style="COLOR: blue"&gt;Aggregate&lt;/SPAN&gt;&lt;FONT id=g66m14 size=1&gt; Products &lt;/FONT&gt;&lt;SPAN id=g66m15 style="COLOR: blue"&gt;In&lt;/SPAN&gt; &lt;SPAN id=g66m16 style="COLOR: blue"&gt;Me&lt;/SPAN&gt;&lt;FONT id=g66m17 size=1&gt;.CategoryProductDataSet.Products _ &lt;/FONT&gt;&lt;/SPAN&gt;  &lt;P class=MsoNormal id=g66m18 style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN id=g66m19 style="FONT-FAMILY: 'Courier New'"&gt;            &lt;SPAN id=g66m20 style="COLOR: blue"&gt;Where&lt;/SPAN&gt;&lt;FONT id=g66m21 size=1&gt; Products.CategoryID = 1 &lt;/FONT&gt;&lt;SPAN id=g66m22 style="COLOR: blue"&gt;AndAlso&lt;/SPAN&gt;&lt;FONT id=g66m23 size=1&gt; _ &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=g66m24 style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN id=g66m25 style="FONT-FAMILY: 'Courier New'"&gt;                  &lt;FONT id=g66m26 size=1&gt;Products.Discontinued = &lt;/FONT&gt;&lt;SPAN id=g66m27 style="COLOR: blue"&gt;False&lt;/SPAN&gt;&lt;FONT id=g66m28 size=1&gt; _ &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=g66m29 style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN id=g66m30 style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;            &lt;SPAN id=g66m31 style="COLOR: blue"&gt;Into&lt;/SPAN&gt;&lt;FONT id=g66m32 size=1&gt; Sum(Products.UnitPrice * Products.UnitsInStock)&lt;/FONT&gt;&lt;/SPAN&gt;                 &lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=g66m36&gt; &lt;/P&gt; &lt;P id=g66m37&gt;如果你希望开始使用LINQ to XML提供器 ，你需要引用 System.Xml.Linq.dll 和 导入 System.Xml.Linq命名空间。之后你就可以编写XML查询了像：&lt;/P&gt; &lt;P id=dp-:&gt;  &lt;/P&gt; &lt;BLOCKQUOTE id=q440&gt;&lt;SPAN id=g66m45 style="COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;FONT id=g66m46 size=1&gt;Dim&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=g66m47 style="FONT-FAMILY: 'Courier New'"&gt;&lt;FONT id=g66m48 size=1&gt; survey = XElement.Load(CurDir() &amp;amp; &lt;/FONT&gt;&lt;SPAN id=g66m49 style="COLOR: #a31515"&gt;"questions.xml"&lt;/SPAN&gt;&lt;FONT id=g66m50 size=1&gt;) &lt;/FONT&gt;&lt;/SPAN&gt;  &lt;P class=MsoNormal id=g66m51 style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN id=g66m52 style="COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;FONT id=g66m53 size=1&gt;Dim&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN id=g66m54 style="FONT-FAMILY: 'Courier New'"&gt;&lt;FONT id=g66m55 size=1&gt; questions = &lt;/FONT&gt;&lt;SPAN id=g66m56 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;FONT id=g66m57 size=1&gt; q &lt;/FONT&gt;&lt;SPAN id=g66m58 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;FONT id=g66m59 size=1&gt; survey...&lt;/FONT&gt;&lt;SPAN id=g66m60 style="COLOR: #6464b9"&gt;&amp;lt;&lt;/SPAN&gt;&lt;FONT id=g66m61 size=1&gt;question&lt;/FONT&gt;&lt;SPAN id=g66m62 style="COLOR: #6464b9"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN id=g66m63 style="COLOR: blue"&gt;Select&lt;/SPAN&gt;&lt;FONT id=g66m64 size=1&gt; q&lt;/FONT&gt;&lt;/SPAN&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=g66m67&gt;   &lt;P class=MsoNormal id=g66m68 style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt; &lt;/P&gt; &lt;P class=MsoNormal id=g66m69 style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN id=g66m70 style="FONT-FAMILY: 'Courier New'"&gt;最后，如果你希望使用LINQ to SQL 类到你升级的项目里，非常简单。仅仅右击并选择添加新项目，然后选择 LINQ to SQL 类模板，之后将打开新的 O/R 设计器并自动的添加&lt;FONT id=g66m71 face=Arial&gt;System.Data.Linq.dll &lt;/FONT&gt;引用。这将允许你编写如下的查询：&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=g66m72 style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt; &lt;/P&gt; &lt;BLOCKQUOTE id=fvef&gt; &lt;P class=MsoNormal id=g66m77 style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN id=g66m78 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=g66m79 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;FONT id=g66m80 size=1&gt; countryList = &lt;/FONT&gt;&lt;SPAN id=g66m81 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;FONT id=g66m82 size=1&gt; Customer &lt;/FONT&gt;&lt;SPAN id=g66m83 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;FONT id=g66m84 size=1&gt; Db.Customers _ &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=g66m85 style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN id=g66m86 style="FONT-FAMILY: 'Courier New'"&gt;                  &lt;SPAN id=g66m87 style="COLOR: blue"&gt;Where&lt;/SPAN&gt;&lt;FONT id=g66m88 size=1&gt; Customer.Country &amp;lt;&amp;gt; &lt;/FONT&gt;&lt;SPAN id=g66m89 style="COLOR: #a31515"&gt;""&lt;/SPAN&gt;&lt;FONT id=g66m90 size=1&gt; _ &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=g66m91 style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN id=g66m92 style="FONT-FAMILY: 'Courier New'"&gt;                  &lt;SPAN id=g66m93 style="COLOR: blue"&gt;Order&lt;/SPAN&gt; &lt;SPAN id=g66m94 style="COLOR: blue"&gt;By&lt;/SPAN&gt;&lt;FONT id=g66m95 size=1&gt; Customer.Country _ &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=g66m96 style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN id=g66m97 style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;                  &lt;SPAN id=g66m98 style="COLOR: blue"&gt;Select&lt;/SPAN&gt;&lt;FONT id=g66m99 size=1&gt; Customer.Country &lt;/FONT&gt;&lt;SPAN id=g66m100 style="COLOR: blue"&gt;Distinct&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P id=g66m103&gt;      &lt;P id=g66m105&gt;我希望我阐明如果在VS2008开始使用LINQ到你当前的程序中。  &lt;P id=g66m106&gt; &lt;/P&gt; &lt;P id=vsor&gt; &lt;/P&gt; &lt;P id=g66m113&gt; &lt;/P&gt;&lt;BR id=g66m114&gt;&lt;BR id=g66m115&gt;&lt;BR id=g66m116&gt;&lt;BR id=g66m117&gt;&lt;BR id=g66m118&gt;&lt;BR id=g66m119&gt;&lt;BR id=g66m120&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1539264213384076775-4581352850525957814?l=blog.sonofvb.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SonOVB/~4/hmKbY8CGAHY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sonofvb.net/feeds/4581352850525957814/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1539264213384076775&amp;postID=4581352850525957814" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/4581352850525957814?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/4581352850525957814?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SonOVB/~3/hmKbY8CGAHY/vs2005vs2008-linqconverting-vs-2005.html" title="" /><author><name>G yc{Son of VB.NET}</name><uri>http://www.blogger.com/profile/10642280584042013225</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14927754176143394902" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.sonofvb.net/2008/08/vs2005vs2008-linqconverting-vs-2005.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIGQHk-eCp7ImA9WxdaGUk.&quot;"><id>tag:blogger.com,1999:blog-1539264213384076775.post-8926497484541695795</id><published>2008-08-29T02:33:00.000+08:00</published><updated>2008-08-29T02:35:21.750+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-29T02:35:21.750+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET 3.5" /><category scheme="http://www.blogger.com/atom/ns#" term="LINQ" /><title /><content type="html">&lt;H1 id=l5p90&gt; 使用LINQ实现动态搜索(Implementing Dynamic Searching Using LINQ)&lt;/H1&gt; &lt;P id=l5p91&gt;            &lt;FONT id=l5p92 size=1&gt;原文链接：&lt;/FONT&gt;&lt;A id=l5p93 href="http://blogs.msdn.com/vbteam/archive/2007/08/29/implementing-dynamic-searching-using-linq.aspx"&gt;&lt;FONT id=l5p94 size=1&gt;http://blogs.msdn.com/vbteam/archive/2007/08/29/implementing-dynamic-searching-using-linq.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt; &lt;P id=l5p95&gt;&lt;FONT id=l5p96 size=1&gt;                作者： Jonathan&lt;/FONT&gt;&lt;/P&gt; &lt;P class=MsoNormal id=l5p98 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt; &lt;P class=MsoNormal id=l5p99 style="MARGIN: 0in 0in 0pt"&gt;     &lt;/P&gt; &lt;P id=l5p910 style="MARGIN: 0in"&gt; &lt;/P&gt; &lt;P id=l5p911 style="MARGIN: 0in"&gt;&lt;FONT id=l5p912 color=#000000&gt;&lt;FONT id=l5p913 face=Arial&gt;&lt;SPAN id=l5p914 style="FONT-FAMILY: SimSun"&gt;在数据窗体应用程序中一个常见的需求是使用户能够按照由任意字段组合的动态查询搜索。例如，程序中的搜索功能允许用户查找所有满足在多个列上定义了不同规则的记录。&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P class=MsoNormal id=l5p915 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt; &lt;P class=MsoNormal id=l5p916 style="MARGIN: 0in 0in 0pt"&gt;         &lt;IMG id=l5p918 style="WIDTH: 443px; HEIGHT: 196px" src="http://blogs.msdn.com/photos/vbteam/images/4635977/original.aspx"&gt;&lt;/P&gt; &lt;P class=MsoNormal id=l5p919 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt; &lt;P class=MsoNormal id=l5p920 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt;&lt;SPAN id=l5p921 style="COLOR: #1f497d"&gt; &lt;P id=l5p922 style="MARGIN: 0in"&gt;&lt;FONT id=l5p923 color=#000000&gt;&lt;FONT id=l5p924 face=Arial&gt;&lt;SPAN id=l5p925 style="FONT-FAMILY: Calibri"&gt;LINQ 使得编写跨越多种数据源的（强大）查询变得简单。&lt;/SPAN&gt;&lt;SPAN id=l5p926 style="FONT-FAMILY: SimSun"&gt;例如，我们可以使用下面的查询来查找在&lt;SPAN id=l5p927 style="FONT-FAMILY: SimSun"&gt;用户指定的时间段内&lt;/SPAN&gt;所有运往指定国家的所有订单（&lt;/SPAN&gt;&lt;SPAN id=l5p928 style="FONT-FAMILY: Calibri"&gt;Orders&lt;/SPAN&gt;&lt;SPAN id=l5p929 style="FONT-FAMILY: SimSun"&gt;）&lt;/SPAN&gt; &lt;SPAN id=l5p930 style="FONT-FAMILY: SimSun"&gt;：&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/SPAN&gt; &lt;P id=l5p938 style="MARGIN: 0in"&gt; &lt;/P&gt;&lt;SPAN id=l5p939 style="FONT-FAMILY: 'Courier New'"&gt;&lt;FONT id=l5p940 size=2&gt; &lt;BLOCKQUOTE id=jkcp style="BACKGROUND-COLOR: #cccccc"&gt; &lt;P class=MsoNormal id=l5p941 style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN id=l5p942 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p943 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;FONT id=l5p944 size=2&gt; query = &lt;/FONT&gt;&lt;SPAN id=l5p945 style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;FONT id=l5p946 size=2&gt; order &lt;/FONT&gt;&lt;SPAN id=l5p947 style="COLOR: blue"&gt;In&lt;/SPAN&gt;&lt;FONT id=l5p948 size=2&gt; db.Orders _ &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=l5p949 style="MARGIN: 0in 0in 0pt"&gt;            &lt;SPAN id=l5p950 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p952 style="COLOR: blue"&gt;Where&lt;/SPAN&gt;&lt;FONT id=l5p953 size=2&gt; order.ShipCountry = &lt;/FONT&gt;&lt;SPAN id=l5p954 style="COLOR: black"&gt;txt&lt;/SPAN&gt;&lt;FONT id=l5p955 size=2&gt;C&lt;/FONT&gt;&lt;SPAN id=l5p956 style="COLOR: black"&gt;oun&lt;/SPAN&gt;&lt;FONT id=l5p957 size=2&gt;try.Text _ &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=l5p958 style="MARGIN: 0in 0in 0pt"&gt;            &lt;SPAN id=l5p959 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p961 style="COLOR: blue"&gt;And&lt;/SPAN&gt;&lt;FONT id=l5p962 size=2&gt; order.ShippedDate &amp;gt;= &lt;/FONT&gt;&lt;SPAN id=l5p963 style="COLOR: black"&gt;dtpStartDate.Value&lt;/SPAN&gt;&lt;FONT id=l5p964 size=2&gt; _ &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=l5p965 style="MARGIN: 0in 0in 0pt"&gt;            &lt;SPAN id=l5p966 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p968 style="COLOR: blue"&gt;And&lt;/SPAN&gt;&lt;FONT id=l5p969 size=2&gt; order.ShippedDate &amp;lt;= &lt;/FONT&gt;&lt;SPAN id=l5p970 style="COLOR: black"&gt;dtpEndDate.Value &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P class=MsoNormal id=l5p971 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT id=l5p972 size=2&gt; &lt;P class=MsoNormal id=l5p973 style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN id=l5p974 style="FONT-FAMILY: SimSun"&gt;这可以很容易的在编译时做到，但是如果我们希望检查订单日期而不是出货（&lt;/SPAN&gt;&lt;SPAN id=l5p975 style="FONT-FAMILY: Calibri"&gt;Shipped&lt;/SPAN&gt;&lt;SPAN id=l5p976 style="FONT-FAMILY: SimSun"&gt;）日期？这使得&lt;/SPAN&gt;&lt;SPAN id=l5p977 style="FONT-FAMILY: SimSun"&gt;我们不得不编写另一个使用&lt;/SPAN&gt;&lt;SPAN id=l5p978 style="COLOR: black; FONT-FAMILY: calibri"&gt;order.OrderDate&lt;/SPAN&gt;&lt;SPAN id=l5p979 style="COLOR: black; FONT-FAMILY: SimSun"&gt;的查询。如果你仅仅生成&lt;SPAN id=l5p980 style="COLOR: black; FONT-FAMILY: calibri"&gt;SQL&lt;/SPAN&gt;&lt;SPAN id=l5p981 style="COLOR: black; FONT-FAMILY: SimSun"&gt;字符串，那么&lt;/SPAN&gt;运行时动态的生成不全是困难的，&lt;/SPAN&gt;&lt;SPAN id=l5p982 style="COLOR: black; FONT-FAMILY: SimSun"&gt;但LINQ如何&lt;/SPAN&gt;&lt;SPAN id=l5p984 style="COLOR: black; FONT-FAMILY: SimSun"&gt;做这个？&lt;/SPAN&gt;&lt;SPAN id=l5p987 style="COLOR: black; FONT-FAMILY: calibri"&gt;LINQ &lt;/SPAN&gt;&lt;SPAN id=l5p988 style="COLOR: black; FONT-FAMILY: SimSun"&gt;是否要求我在编译时指定条件为了建立查询？幸运的是，答案是肯定的。&lt;/SPAN&gt;&lt;SPAN id=l5p989 style="COLOR: black; FONT-FAMILY: calibri"&gt;LINQ&lt;/SPAN&gt;&lt;SPAN id=l5p990 style="COLOR: black; FONT-FAMILY: SimSun"&gt;支持在运行时通过表达式&lt;/SPAN&gt; &lt;SPAN id=l5p991 style="COLOR: black; FONT-FAMILY: SimSun"&gt;树&lt;/SPAN&gt;&lt;SPAN id=l5p992 style="COLOR: black; FONT-FAMILY: calibri"&gt; API &lt;/SPAN&gt;&lt;SPAN id=l5p993 style="COLOR: black; FONT-FAMILY: SimSun"&gt;和表达式编译器（&lt;/SPAN&gt;&lt;SPAN id=l5p994 style="COLOR: black; FONT-FAMILY: calibri"&gt;Expression Tree API and the Expression Compiler&lt;/SPAN&gt;&lt;SPAN id=l5p995 style="COLOR: black; FONT-FAMILY: SimSun"&gt;）来建立动态查询。&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=l5p996 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt; &lt;P class=MsoNormal id=l5p9113 style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN id=l5p9114 style="FONT-FAMILY: 宋体"&gt;在&lt;/SPAN&gt;&lt;SPAN id=l5p9115 style="FONT-FAMILY: Calibri"&gt;Visual Studio 2008&lt;/SPAN&gt;&lt;SPAN id=l5p9116 style="FONT-FAMILY: 宋体"&gt;中，任何有效的&lt;/SPAN&gt;&lt;SPAN id=l5p9117 style="FONT-FAMILY: Calibri"&gt;VB&lt;/SPAN&gt;&lt;SPAN id=l5p9118 style="FONT-FAMILY: 宋体"&gt;表达式都被解释成表达式树（&lt;/SPAN&gt;&lt;SPAN id=l5p9119 style="FONT-FAMILY: calibri"&gt;Expression Tree &lt;/SPAN&gt;&lt;SPAN id=l5p9120 style="FONT-FAMILY: 宋体"&gt;）。我们要做的是建立一个表达式树（&lt;SPAN id=l5p9121 style="FONT-FAMILY: calibri"&gt;Expression Tree &lt;/SPAN&gt;&lt;SPAN id=l5p9122 style="FONT-FAMILY: 宋体"&gt;）来&lt;/SPAN&gt;表示用户条件&lt;/SPAN&gt;&lt;SPAN id=l5p9123 style="FONT-FAMILY: 宋体"&gt;，然后在传递它到&lt;/SPAN&gt;&lt;SPAN id=l5p9124 style="FONT-FAMILY: calibri"&gt;LINQ to SQL&lt;/SPAN&gt;&lt;SPAN id=l5p9125 style="FONT-FAMILY: 宋体"&gt;，&lt;/SPAN&gt;&lt;SPAN id=l5p9126 style="FONT-FAMILY: calibri"&gt;LINQ to SQL&lt;/SPAN&gt;&lt;SPAN id=l5p9127 style="FONT-FAMILY: 宋体"&gt;运行时将会把它转换成&lt;/SPAN&gt;&lt;SPAN id=l5p9128 style="FONT-FAMILY: calibri"&gt;SQL&lt;/SPAN&gt;&lt;SPAN id=l5p9129 style="FONT-FAMILY: 宋体"&gt;语句。那么我们上面说的&lt;/SPAN&gt;&lt;SPAN id=l5p9130 style="FONT-FAMILY: calibri"&gt; Where&lt;/SPAN&gt;&lt;SPAN id=l5p9131 style="FONT-FAMILY: 宋体"&gt;语句第一个部分看起来像这个样子：&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=l5p9139 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt; &lt;P class=MsoNormal id=yk0s style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt; &lt;P class=MsoNormal id=yk0s0 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt;&lt;SPAN id=l5p9143 style="FONT-FAMILY: 'Courier New'"&gt; &lt;BLOCKQUOTE id=o0mk style="BACKGROUND-COLOR: #cccccc"&gt;&lt;SPAN id=l5p9145 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p9146 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; p = Expression.Parameter(&lt;SPAN id=l5p9148 style="COLOR: blue"&gt;GetType&lt;/SPAN&gt;(Order), &lt;SPAN id=l5p9150 style="COLOR: #a31515"&gt;""&lt;/SPAN&gt;) &lt;/SPAN&gt;  &lt;P class=MsoNormal id=l5p9152 style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN id=l5p9153 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p9154 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; order = &lt;SPAN id=l5p9156 style="COLOR: blue"&gt;GetType&lt;/SPAN&gt;(Order).GetProperty(&lt;SPAN id=l5p9158 style="COLOR: #a31515"&gt;"ShipCountry"&lt;/SPAN&gt;) &lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=l5p9160 style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN id=l5p9161 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p9162 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; expr = Expression.Equal(Expression.PropertyOrField(p, order.Name), Expression.Constant(&lt;SPAN id=l5p9164 style="COLOR: #a31515"&gt;"Germany"&lt;/SPAN&gt;)) &lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=l5p9166 style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN id=l5p9167 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p9168 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; predicate = Expression.Lambda(&lt;SPAN id=l5p9170 style="COLOR: blue"&gt;Of&lt;/SPAN&gt; Func(&lt;SPAN id=l5p9172 style="COLOR: blue"&gt;Of&lt;/SPAN&gt; Order, &lt;SPAN id=l5p9174 style="COLOR: blue"&gt;Boolean&lt;/SPAN&gt;))(expr, &lt;SPAN id=l5p9176 style="COLOR: blue"&gt;New&lt;/SPAN&gt; ParameterExpression() {p}) &lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/SPAN&gt;&lt;FONT id=l5p9178 size=2&gt; &lt;P class=MsoNormal id=l5p9179 style="MARGIN: 0in 0in 0pt"&gt;   &lt;P class=MsoNormal id=l5p9180 style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN id=l5p9182 style="FONT-FAMILY: 宋体"&gt;&lt;FONT id=bi6b face=Calibri&gt;Yikes，这只是一小部分，我们目前只完成了1/3的Where语句！我可不想在写12行代码去来在运行时建立Where语句。我想做的是写一个CreateCondition 扩展方法，允许我用一行简单的代码建立表达式树（Expression Tree），像是这个样：&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=l5p9201 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt; &lt;P class=MsoNormal id=l5p9202 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt;&lt;SPAN id=l5p9203 style="FONT-FAMILY: 'Courier New'"&gt;&lt;FONT id=l5p9204 size=2&gt; &lt;BLOCKQUOTE id=ygnr style="BACKGROUND-COLOR: #cccccc"&gt;&lt;SPAN id=l5p9205 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p9206 style="COLOR: blue"&gt;&lt;SPAN id=l5p9207 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p9208 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;FONT id=l5p9209 size=2&gt; condition1 = db.Orders.CreateCondition(&lt;/FONT&gt;&lt;SPAN id=l5p9210 style="COLOR: #a31515"&gt;"ShipCountry"&lt;/SPAN&gt;&lt;FONT id=l5p9211 size=2&gt;, Compare.Equal, &lt;/FONT&gt;&lt;SPAN id=l5p9212 style="COLOR: #a31515"&gt;"Germany"&lt;/SPAN&gt;&lt;FONT id=l5p9213 size=2&gt;) &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/BLOCKQUOTE&gt; &lt;P class=MsoNormal id=l5p9214 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT id=l5p9215 size=2&gt; &lt;P class=MsoNormal id=l5p9216 style="MARGIN: 0in 0in 0pt"&gt; &lt;SPAN id=l5p9217 style="FONT-FAMILY: 宋体"&gt;那么对于&lt;/SPAN&gt;&lt;SPAN id=l5p9218 style="FONT-FAMILY: calibri"&gt;ShippedDate &lt;/SPAN&gt;&lt;SPAN id=l5p9219 style="FONT-FAMILY: 宋体"&gt;我们可以建立&lt;/SPAN&gt;&lt;SPAN id=l5p9220 style="FONT-FAMILY: Calibri"&gt;2&lt;/SPAN&gt;&lt;SPAN id=l5p9221 style="FONT-FAMILY: 宋体"&gt;个条件：&lt;/SPAN&gt; &lt;/P&gt; &lt;P class=MsoNormal id=l5p9226 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt; &lt;P class=MsoNormal id=l5p9227 style="MARGIN: 0in 0in 0pt"&gt;  &lt;/P&gt;&lt;SPAN id=l5p9228 style="FONT-FAMILY: 'Courier New'"&gt;&lt;FONT id=l5p9229 size=2&gt; &lt;BLOCKQUOTE id=x6_3 style="BACKGROUND-COLOR: #cccccc"&gt;&lt;SPAN id=l5p9230 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p9231 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;FONT id=l5p9232 size=2&gt; startDate? = #1/1/1997# &lt;/FONT&gt;&lt;/SPAN&gt;  &lt;P class=MsoNormal id=l5p9233 style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN id=l5p9234 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p9235 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;FONT id=l5p9236 size=2&gt; endDate? = #1/31/1997# &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=l5p9237 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt; &lt;P class=MsoNormal id=l5p9238 style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN id=l5p9239 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p9240 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;FONT id=l5p9241 size=2&gt; condition2 = db.Orders.CreateCondition(&lt;/FONT&gt;&lt;SPAN id=l5p9242 style="COLOR: #a31515"&gt;"ShippedDate"&lt;/SPAN&gt;&lt;FONT id=l5p9243 size=2&gt;, Compare.GreaterThanOrEqual, startDate) &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=l5p9244 style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN id=l5p9245 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p9246 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;FONT id=l5p9247 size=2&gt; condition3 = db.Orders.CreateCondition(&lt;/FONT&gt;&lt;SPAN id=l5p9248 style="COLOR: #a31515"&gt;"ShippedDate"&lt;/SPAN&gt;&lt;FONT id=l5p9249 size=2&gt;, Compare.LessThanOrEqual, endDate) &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P class=MsoNormal id=l5p9250 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt;&lt;/FONT&gt; &lt;P class=MsoNormal id=l5p9251 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt;&lt;/SPAN&gt; &lt;P class=MsoNormal id=sham style="MARGIN: 0in 0in 0pt"&gt;  &lt;/P&gt; &lt;P id=l5p9267 style="MARGIN: 0in; COLOR: black"&gt;&lt;SPAN id=l5p9268 style="FONT-FAMILY: 宋体"&gt;注意我们第一次传递一个字符串，之后又传入&lt;/SPAN&gt;&lt;SPAN id=l5p9269 style="FONT-FAMILY: Calibri"&gt;2&lt;/SPAN&gt;&lt;SPAN id=l5p9270 style="FONT-FAMILY: 宋体"&gt;个可为空的日期&lt;/SPAN&gt; &lt;SPAN id=l5p9271 style="FONT-FAMILY: 宋体"&gt;（&lt;/SPAN&gt;&lt;SPAN id=l5p9272 style="FONT-FAMILY: Calibri"&gt;Literal&lt;/SPAN&gt;&lt;SPAN id=l5p9273 style="FONT-FAMILY: 宋体"&gt;）&lt;/SPAN&gt; &lt;SPAN id=l5p9274 style="FONT-FAMILY: 宋体"&gt;，我们可以这么做是因为&lt;/SPAN&gt;&lt;SPAN id=l5p9275 style="FONT-FAMILY: calibri"&gt;CreateCondition &lt;/SPAN&gt;&lt;SPAN id=l5p9276 style="FONT-FAMILY: 宋体"&gt;方法是泛型的并可以根据传入的参数推断类型。我们现在仅需要组合条件到一个条件中：&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=l5p9280 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt; &lt;P class=MsoNormal id=l5p9289 style="MARGIN: 0in 0in 0pt"&gt;  &lt;/P&gt;&lt;SPAN id=l5p9290 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p9291 style="COLOR: blue"&gt; &lt;BLOCKQUOTE id=kq0c style="BACKGROUND-COLOR: #cccccc"&gt;&lt;SPAN id=l5p9292 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p9293 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;FONT id=l5p9294 size=2&gt; c = Condition.Combine(condition1, Compare.And, condition2, condition3) &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/BLOCKQUOTE&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;P class=MsoNormal id=l5p9295 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt;&lt;FONT id=l5p9296 size=3&gt;&lt;FONT id=l5p9297 face=Calibri&gt;&lt;SPAN id=l5p9298 style="COLOR: black"&gt; &lt;P id=l5p9299 style="MARGIN: 0in; COLOR: black"&gt;&lt;SPAN id=l5p9300 style="FONT-FAMILY: 宋体"&gt;或者我们也可以用操作符重载（&lt;/SPAN&gt;&lt;SPAN id=l5p9301 style="FONT-FAMILY: calibri"&gt;Operator Overloading &lt;/SPAN&gt;&lt;SPAN id=l5p9302 style="FONT-FAMILY: 宋体"&gt;）来完成这个（等价于上面的代码）：&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt; &lt;P class=MsoNormal id=l5p9318 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt;&lt;SPAN id=l5p9319 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p9320 style="COLOR: blue"&gt; &lt;BLOCKQUOTE id=rimf style="BACKGROUND-COLOR: #cccccc"&gt;&lt;SPAN id=l5p9321 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p9322 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt;&lt;FONT id=l5p9323 size=2&gt; c = condition1 &lt;/FONT&gt;&lt;SPAN id=l5p9324 style="COLOR: blue"&gt;And&lt;/SPAN&gt;&lt;FONT id=l5p9325 size=2&gt; condition2 &lt;/FONT&gt;&lt;SPAN id=l5p9326 style="COLOR: blue"&gt;And&lt;/SPAN&gt;&lt;FONT id=l5p9327 size=2&gt; condition3 &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/BLOCKQUOTE&gt; &lt;P class=MsoNormal id=l5p9328 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt;&lt;/SPAN&gt; &lt;P class=MsoNormal id=l5p9329 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt;&lt;/SPAN&gt; &lt;P class=MsoNormal id=l5p9330 style="MARGIN: 0in 0in 0pt"&gt; &lt;SPAN id=l5p9331 style="FONT-FAMILY: calibri"&gt;OK&lt;/SPAN&gt;&lt;SPAN id=l5p9332 style="FONT-FAMILY: 宋体"&gt;现在我们可以建立&lt;/SPAN&gt; &lt;SPAN id=l5p9333 style="FONT-FAMILY: 宋体"&gt;我们的&lt;/SPAN&gt; &lt;SPAN id=l5p9334 style="FONT-FAMILY: calibri"&gt;Condition &lt;/SPAN&gt; &lt;SPAN id=l5p9336 style="FONT-FAMILY: 宋体"&gt;对象来过滤数据：&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN id=l5p9337 style="COLOR: black"&gt;&lt;FONT id=l5p9338 size=3&gt;&lt;FONT id=l5p9339 face=Calibri&gt; &lt;P class=MsoNormal id=l5p9344 style="MARGIN: 0in 0in 0pt"&gt;  &lt;/P&gt; &lt;BLOCKQUOTE id=cny7 style="BACKGROUND-COLOR: #cccccc"&gt;&lt;SPAN id=l5p9359 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p9361 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p9362 style="COLOR: green"&gt;&lt;FONT id=lukw0 size=2&gt;&lt;FONT id=lukw1 face="SimSun,宋体,MS Song,serif"&gt;&lt;SPAN id=l5p9363 style="FONT-FAMILY: 'Courier New'"&gt;'&lt;/SPAN&gt;&lt;SPAN id=l5p9364 style="FONT-FAMILY: SimSun"&gt;过滤所有不符合条件的&lt;/SPAN&gt;&lt;SPAN id=l5p9365 style="FONT-FAMILY: 'Courier New'"&gt;Orders&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;P id=ho_l5&gt;&lt;/P&gt;&lt;SPAN id=l5p9401 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p9402 style="COLOR: blue"&gt; &lt;P class=MsoNormal id=r8oz0 style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT id=lukw4 size=2&gt;&lt;FONT id=lukw5 face="SimSun,宋体,MS Song,serif"&gt;&lt;SPAN id=r8oz1 style="COLOR: green; FONT-FAMILY: 'Courier New'"&gt;'&lt;/SPAN&gt;&lt;SPAN id=l5p9389 style="COLOR: green; FONT-FAMILY: 宋体"&gt;注意&lt;/SPAN&gt; &lt;SPAN id=l5p9390 style="COLOR: green; FONT-FAMILY: 宋体"&gt;这个查询还没有执行，他将延期执行&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;   &lt;P class=MsoNormal id=l5p9393 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;P class=MsoNormal id=r8oz3 style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT id=lukw9 size=2&gt;&lt;FONT id=lukw10 face="SimSun,宋体,MS Song,serif"&gt;&lt;SPAN id=r8oz4 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=r8oz5 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; filteredQuery = db.Orders.Where(c) &lt;/SPAN&gt; &lt;/FONT&gt;&lt;/FONT&gt; &lt;P class=MsoNormal id=l5p9404 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt; &lt;P class=MsoNormal id=l5p9405 style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT id=lukw12 size=2&gt;&lt;FONT id=lukw13 face="SimSun,宋体,MS Song,serif"&gt;&lt;SPAN id=l5p9406 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p9407 style="COLOR: green"&gt;&lt;SPAN id=l5p9408 style="COLOR: green; FONT-FAMILY: 'Courier New'"&gt;'&lt;/SPAN&gt;&lt;SPAN id=l5p9409 style="COLOR: green; FONT-FAMILY: SimSun"&gt;我们还可以执行其他操作（像是排序）在&lt;/SPAN&gt; &lt;SPAN id=l5p9410 style="COLOR: green; FONT-FAMILY: 'Courier New'"&gt;filteredQuery&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;  &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;BR id=l5p9418&gt; &lt;P class=MsoNormal id=l5p9417 style="MARGIN: 0in 0in 0pt"&gt;&lt;/P&gt;  &lt;P class=MsoNormal id=l5p9419 style="MARGIN: 0in 0in 0pt"&gt;&lt;/P&gt; &lt;P class=MsoNormal id=l5p9420 style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT id=lukw18 size=2&gt;&lt;FONT id=lukw19 face="SimSun,宋体,MS Song,serif"&gt;&lt;SPAN id=l5p9421 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p9422 style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; query = &lt;SPAN id=l5p9424 style="COLOR: blue"&gt;From&lt;/SPAN&gt; row &lt;SPAN id=l5p9426 style="COLOR: blue"&gt;In&lt;/SPAN&gt; filteredQuery _ &lt;/SPAN&gt; &lt;/FONT&gt;&lt;/FONT&gt; &lt;P class=MsoNormal id=l5p9428 style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN id=l5p9429 style="FONT-FAMILY: 'Courier New'"&gt;&lt;FONT id=lukw20 size=2&gt;&lt;FONT id=lukw21 face="SimSun,宋体,MS Song,serif"&gt;            &lt;SPAN id=l5p9431 style="COLOR: blue"&gt;Order&lt;/SPAN&gt; &lt;SPAN id=l5p9432 style="COLOR: blue"&gt;By&lt;/SPAN&gt; row.OrderDate, row.OrderID _ &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=l5p9434 style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN id=l5p9435 style="FONT-FAMILY: 'Courier New'"&gt;&lt;FONT id=lukw22 size=2&gt;&lt;FONT id=lukw23 face="SimSun,宋体,MS Song,serif"&gt;            &lt;SPAN id=l5p9437 style="COLOR: blue"&gt;Select&lt;/SPAN&gt; row &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal id=l5p9439 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt; &lt;P class=MsoNormal id=l5p9440 style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT id=lukw25 size=2&gt;&lt;FONT id=lukw26 face="SimSun,宋体,MS Song,serif"&gt;&lt;SPAN id=l5p9441 style="FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN id=l5p9442 style="COLOR: green"&gt;&lt;SPAN id=l5p9443 style="COLOR: green; FONT-FAMILY: 'Courier New'"&gt;'&lt;/SPAN&gt;&lt;SPAN id=l5p9444 style="COLOR: green; FONT-FAMILY: SimSun"&gt;执行查询并显示结构到&lt;/SPAN&gt;&lt;SPAN id=l5p9445 style="COLOR: green; FONT-FAMILY: 'Courier New'"&gt;DataGridView1&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt; &lt;BR id=l5p9453&gt; &lt;P class=MsoNormal id=a0qf style="MARGIN: 0in 0in 0pt"&gt;&lt;/P&gt;  &lt;P class=MsoNormal id=l5p9454 style="MARGIN: 0in 0in 0pt"&gt;&lt;/P&gt; &lt;P class=MsoNormal id=l5p9455 style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN id=l5p9456 style="FONT-FAMILY: 'Courier New'"&gt;&lt;FONT id=l5p9457 size=2&gt;&lt;FONT id=lukw31 face="SimSun,宋体,MS Song,serif"&gt;DataGridView1.DataSource = query&lt;/FONT&gt; &lt;/FONT&gt;&lt;/SPAN&gt;  &lt;P class=MsoNormal id=l5p9458 style="MARGIN: 0in 0in 0pt"&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT id=hzel20 size=3&gt;&lt;FONT id=l5p9459 size=2&gt; &lt;DIV class=MsoNormal id=l5p9460 style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN id=l5p9461 style="FONT-FAMILY: SimSun"&gt;到现在为止,还不错。我们使用动态构造条件和强类型等&lt;/SPAN&gt; &lt;SPAN id=l5p9462 style="FONT-FAMILY: SimSun"&gt;在&lt;/SPAN&gt;&lt;SPAN id=l5p9463 style="FONT-FAMILY: Calibri"&gt;LINQ&lt;/SPAN&gt;&lt;SPAN id=l5p9464 style="FONT-FAMILY: SimSun"&gt;上。&lt;/SPAN&gt; &lt;SPAN id=l5p9465 style="FONT-FAMILY: SimSun"&gt;我们还有一个到数据库问题，由于使用了延期执行它将确保直到我们列举数据（通过数据绑定）之前都不会执行。条件&lt;/SPAN&gt;&lt;SPAN id=l5p9466 style="FONT-FAMILY: Calibri"&gt;API&lt;/SPAN&gt;&lt;SPAN id=l5p9467 style="FONT-FAMILY: SimSun"&gt;（&lt;/SPAN&gt;&lt;SPAN id=l5p9468 style="COLOR: black; FONT-FAMILY: calibri"&gt;Condition API &lt;/SPAN&gt;&lt;SPAN id=l5p9469 style="COLOR: black; FONT-FAMILY: calibri"&gt;)&lt;/SPAN&gt;&lt;SPAN id=l5p9470 style="COLOR: black; FONT-FAMILY: SimSun"&gt;是用来简单的构造和编译表达式树，但是我们还需要写一点代码来构建基于用户输入的条件。&lt;/SPAN&gt; &lt;SPAN id=l5p9471 style="COLOR: black; FONT-FAMILY: SimSun"&gt;在&lt;/SPAN&gt;&lt;SPAN id=l5p9472 style="COLOR: black; FONT-FAMILY: calibri"&gt;ConditionBuilder &lt;/SPAN&gt;&lt;SPAN id=l5p9473 style="COLOR: black; FONT-FAMILY: SimSun"&gt;控件&lt;/SPAN&gt; &lt;SPAN id=l5p9474 style="COLOR: black; FONT-FAMILY: SimSun"&gt;里&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV class=MsoNormal id=l5p9481 style="MARGIN: 0in 0in 0pt"&gt; &lt;/DIV&gt; &lt;DIV class=MsoNormal id=l5p9482 style="MARGIN: 0in 0in 0pt"&gt;      &lt;IMG id=l5p9486 src="http://blogs.msdn.com/photos/vbteam/images/4636057/original.aspx"&gt;&lt;/DIV&gt; &lt;DIV class=MsoNormal id=l5p9487 style="MARGIN: 0in 0in 0pt"&gt; &lt;/DIV&gt; &lt;DIV id=l5p9489 style="MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: SimSun"&gt; &lt;/DIV&gt; &lt;DIV id=a5rv style="MARGIN: 0in 0in 0in 0.375in; FONT-FAMILY: SimSun"&gt; &lt;/DIV&gt; &lt;DIV class=MsoNormal id=l5p9491 style="MARGIN: 0in 0in 0pt"&gt; &lt;/DIV&gt; &lt;DIV id=l5p9492 style="MARGIN: 0in; COLOR: black; FONT-FAMILY: 宋体"&gt;&lt;FONT id=l5p9493 size=2&gt;它允许用户在运行时动态指定条件&lt;/FONT&gt;&lt;/DIV&gt; &lt;DIV id=l5p9500 style="MARGIN: 0in; COLOR: black; FONT-FAMILY: 宋体"&gt; &lt;/DIV&gt; &lt;DIV class=MsoNormal id=l5p9501 style="MARGIN: 0in 0in 0pt"&gt; &lt;/DIV&gt; &lt;DIV class=MsoNormal id=l5p9502 style="MARGIN: 0in 0in 0pt"&gt;            &lt;IMG id=l5p9503 src="http://blogs.msdn.com/photos/vbteam/images/4635977/original.aspx"&gt;&lt;/DIV&gt; &lt;DIV class=MsoNormal id=l5p9504 style="MARGIN: 0in 0in 0pt"&gt; &lt;/DIV&gt; &lt;DIV id=l5p9506 style="MARGIN: 0in; COLOR: black"&gt;&lt;SPAN id=l5p9507 style="FONT-FAMILY: 宋体"&gt;注意那个日期字段我们将自动使用&lt;/SPAN&gt;&lt;SPAN id=l5p9508 style="FONT-FAMILY: calibri"&gt;DateTimePicker &lt;/SPAN&gt;&lt;SPAN id=l5p9509 style="FONT-FAMILY: 宋体"&gt;代替&lt;/SPAN&gt;&lt;SPAN id=l5p9510 style="FONT-FAMILY: calibri"&gt;TextBox&lt;/SPAN&gt;&lt;SPAN id=l5p9511 style="FONT-FAMILY: 宋体"&gt;，还有布尔值&lt;/SPAN&gt; &lt;SPAN id=l5p9512 style="FONT-FAMILY: 宋体"&gt;我们将结果放入&lt;/SPAN&gt;&lt;SPAN id=l5p9513 style="FONT-FAMILY: calibri"&gt;Checkbox &lt;/SPAN&gt;&lt;SPAN id=l5p9514 style="FONT-FAMILY: 宋体"&gt;中&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV id=l5p9515 style="MARGIN: 0in; COLOR: black"&gt; &lt;/DIV&gt; &lt;DIV class=MsoNormal id=l5p9521 style="MARGIN: 0in 0in 0pt"&gt;     &lt;/DIV&gt; &lt;DIV class=MsoNormal id=l5p9522 style="MARGIN: 0in 0in 0pt"&gt; &lt;/DIV&gt; &lt;DIV id=l5p9523 style="MARGIN: 0in; COLOR: black"&gt;&lt;SPAN id=l5p9524 style="FONT-FAMILY: calibri"&gt;OK&lt;/SPAN&gt;&lt;SPAN id=l5p9525 style="FONT-FAMILY: SimSun"&gt;，我们隐藏了在运行时的用户体验，但是我们怎么实际创建&lt;/SPAN&gt;&lt;SPAN id=l5p9526 style="FONT-FAMILY: calibri"&gt;Condition API&lt;/SPAN&gt;&lt;SPAN id=l5p9527 style="FONT-FAMILY: SimSun"&gt;？文档中以的代码在下面，我不打算在全部解释，但这里只解释一下基础部分：&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV class=MsoNormal id=l5p9529 style="MARGIN: 0in 0in 0pt"&gt; &lt;/DIV&gt; &lt;DIV class=MsoNormal id=l5p9533 style="MARGIN: 0in 0in 0pt"&gt;     &lt;/DIV&gt;&lt;SPAN id=l5p9535 style="FONT-FAMILY: SimSun"&gt; &lt;DIV id=l5p9536 style="MARGIN: 0in; COLOR: black"&gt;&lt;SPAN id=l5p9537 style="FONT-FAMILY: 宋体"&gt;    1、有&lt;/SPAN&gt;&lt;SPAN id=l5p9538 style="FONT-FAMILY: Calibri"&gt;3&lt;/SPAN&gt;&lt;SPAN id=l5p9539 style="FONT-FAMILY: 宋体"&gt;个主要类的：&lt;/SPAN&gt;&lt;SPAN id=l5p9540 style="FONT-FAMILY: calibri"&gt; Condition, Condition(Of T), and Condition(Of T, S)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/SPAN&gt; &lt;DIV class=MsoListParagraph id=l5p9542 style="MARGIN: 0in 0in 0pt 0.5in"&gt; &lt;/DIV&gt; &lt;DIV id=l5p9547&gt;&lt;/DIV&gt; &lt;DIV class=MsoListParagraph id=l5p9548 style="MARGIN: 0in 0in 0pt 0.5in"&gt;          &lt;/DIV&gt; &lt;OL id=l5p9549&gt; &lt;OL id=l5p9550 type=a&gt; &lt;LI id=l5p9551&gt; &lt;DIV id=l5p9552 style="MARGIN: 0in; COLOR: black"&gt;&lt;SPAN id=l5p9553 style="FONT-FAMILY: calibri"&gt;Condition &lt;/SPAN&gt;&lt;SPAN id=l5p9554 style="FONT-FAMILY: 宋体"&gt;是一个抽象类用来构造一般版本（&lt;/SPAN&gt;&lt;SPAN id=l5p9555 style="FONT-FAMILY: calibri"&gt;generic versions&lt;/SPAN&gt;&lt;SPAN id=l5p9556 style="FONT-FAMILY: 宋体"&gt;）通过构造这个，可以为一般版本参数推断带来好处，即我们不用担心传入的一般版本参数到方法，工厂方法将帮助我们解决。&lt;/SPAN&gt;&lt;/DIV&gt; &lt;LI id=l5p9557&gt; &lt;DIV id=l5p9558 style="MARGIN: 0in; COLOR: black"&gt;&lt;SPAN id=l5p9559 style="FONT-FAMILY: 宋体"&gt;&lt;SPAN id=l5p9560 style="FONT-FAMILY: calibri"&gt;Condition(Of T)&lt;/SPAN&gt; &lt;SPAN id=l5p9561 style="FONT-FAMILY: SimSun"&gt;使用合并多个&lt;/SPAN&gt;&lt;SPAN id=l5p9562 style="FONT-FAMILY: calibri"&gt;conditions &lt;/SPAN&gt;&lt;SPAN id=l5p9563 style="FONT-FAMILY: SimSun"&gt;到一起。&lt;/SPAN&gt;&lt;SPAN id=l5p9564 style="FONT-FAMILY: calibri"&gt;T&lt;/SPAN&gt;&lt;SPAN id=l5p9565 style="FONT-FAMILY: SimSun"&gt;是元素类型（即上面例子中的&lt;/SPAN&gt;&lt;SPAN id=l5p9566 style="FONT-FAMILY: calibri"&gt; Order &lt;/SPAN&gt;&lt;SPAN id=l5p9567 style="FONT-FAMILY: SimSun"&gt;）&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;LI id=l5p9568&gt; &lt;DIV id=l5p9569 style="MARGIN: 0in; COLOR: black"&gt;&lt;FONT id=l5p9570 size=2&gt;&lt;FONT id=l5p9571 face=Calibri&gt;Condition(Of T, S)&lt;/FONT&gt;&lt;SPAN id=l5p9572 style="FONT-FAMILY: SimSun"&gt;是一种简单类型，它表示“&lt;/SPAN&gt;&lt;SPAN id=l5p9573 style="FONT-FAMILY: calibri"&gt;object.propery &amp;lt;comparison&amp;gt; &lt;/SPAN&gt;&lt;SPAN id=l5p9574 style="FONT-FAMILY: SimSun"&gt;值&lt;/SPAN&gt;&lt;SPAN id=l5p9575 style="FONT-FAMILY: calibri"&gt;”&lt;/SPAN&gt;&lt;SPAN id=l5p9576 style="FONT-FAMILY: SimSun"&gt;表达式。类型参数&lt;/SPAN&gt;&lt;SPAN id=l5p9577 style="FONT-FAMILY: calibri"&gt; S&lt;/SPAN&gt;&lt;SPAN id=l5p9578 style="FONT-FAMILY: SimSun"&gt;将被推断为相应的值类型传入（即&lt;/SPAN&gt;&lt;SPAN id=l5p9579 style="FONT-FAMILY: calibri"&gt; String, Date, Boolean &lt;/SPAN&gt;&lt;SPAN id=l5p9580 style="FONT-FAMILY: calibri"&gt;...&lt;/SPAN&gt;&lt;SPAN id=l5p9581 style="FONT-FAMILY: SimSun"&gt;）&lt;/SPAN&gt; &lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/OL&gt; &lt;DIV class=MsoListParagraph id=l5p9597 style="MARGIN: 0in 0in 0pt 1in"&gt; &lt;/DIV&gt; &lt;DIV id=l5p9598&gt;&lt;/DIV&gt; &lt;DIV class=MsoListParagraph id=l5p9599 style="MARGIN: 0in 0in 0pt 1in"&gt;  &lt;/DIV&gt; &lt;DIV class=MsoListParagraph id=l5p9600 style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;FONT id=l5p9601 face=Calibri size=3&gt;&lt;FONT id=l5p9602 size=2&gt;&lt;SPAN id=l5p9603 style="FONT-FAMILY: SimSun"&gt; 2、执行本地查询&lt;/SPAN&gt; &lt;SPAN id=l5p9604 style="FONT-FAMILY: SimSun"&gt;我们将&lt;/SPAN&gt; &lt;SPAN id=l5p9605 style="FONT-FAMILY: calibri"&gt;Lambda&lt;/SPAN&gt; &lt;SPAN id=l5p9606 style="FONT-FAMILY: SimSun"&gt;表达式&lt;/SPAN&gt; &lt;SPAN id=l5p9607 style="FONT-FAMILY: SimSun"&gt;编译成一个代理，所以它可以在内存中执行（&lt;/SPAN&gt;&lt;SPAN id=l5p9608 style="FONT-FAMILY: calibri"&gt;executed in-memory&lt;/SPAN&gt;&lt;SPAN id=l5p9609 style="FONT-FAMILY: SimSun"&gt;）。用户可以调用这个代理通过调用匹配方法。&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;FONT id=l5p9610 face=Calibri size=3&gt;&lt;FONT id=l5p9611 face=Calibri size=3&gt; &lt;DIV class=MsoListParagraph id=l5p9612 style="MARGIN: 0in 0in 0pt 0.5in"&gt;  &lt;/DIV&gt; &lt;DIV class=MsoListParagraph id=l5p9617 style="MARGIN: 0in 0in 0pt 0.5in"&gt; &lt;/DIV&gt; &lt;BLOCKQUOTE id=o4e1 style="BACKGROUND-COLOR: #cccccc"&gt; &lt;DIV class=MsoListParagraph id=l5p9618 style="MARGIN: 0in 0in 0pt 0.5in"&gt; &lt;/DIV&gt;&lt;FONT id=n::n0 color=#38761d size=2&gt;            '编译lambda 表达式成委托 &lt;/FONT&gt; &lt;DIV id=l5p9624 style="MARGIN: 0in 0in 0in 0.375in; COLOR: green"&gt; &lt;/DIV&gt;&lt;SPAN id=wkpv0 style="FONT-FAMILY: SimSun"&gt;&lt;FONT id=hzel30 size=2&gt; &lt;DIV id=l5p9641 style="MARGIN: 0in 0in 0in 0.375in; COLOR: green"&gt;&lt;SPAN id=l5p9642 style="FONT-FAMILY: 'Courier New'"&gt;&lt;FONT id=l5p9643 size=2&gt;&lt;FONT id=f17u1 color=#000000&gt;del &lt;/FONT&gt;= &lt;/FONT&gt;&lt;SPAN id=l5p9644 style="COLOR: blue"&gt;DirectCast&lt;/SPAN&gt;&lt;FONT id=l5p9645 color=#000000 size=2&gt;(LambdaExpr.Compile(), Func(&lt;/FONT&gt;&lt;SPAN id=l5p9646 style="COLOR: blue"&gt;Of&lt;/SPAN&gt;&lt;FONT id=l5p9647 size=2&gt; &lt;FONT id=bm:l0 color=#000000&gt;T&lt;/FONT&gt;, &lt;/FONT&gt;&lt;SPAN id=l5p9648 style="COLOR: blue"&gt;Boolean&lt;/SPAN&gt;&lt;FONT id=l5p9649 color=#000000 size=2&gt;)) &lt;/FONT&gt;&lt;/SPAN&gt;   &lt;/DIV&gt; &lt;DIV id=hj.x0 style="MARGIN: 0in 0in 0in 0.375in; COLOR: green"&gt;   &lt;/DIV&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/BLOCKQUOTE&gt;&lt;SPAN id=hzel31 style="FONT-FAMILY: SimSun"&gt;&lt;FONT id=hzel32 size=2&gt; &lt;DIV id=hj.x2&gt;&lt;FONT id=hj.x3 size=2&gt;&lt;FONT id=hj.x4 face=宋体 color=#1f497d&gt;     3、扩展方法实际上&lt;/FONT&gt; &lt;SPAN id=l5p9655 style="COLOR: #1f497d; FONT-FAMILY: SimSun"&gt;是定义在&lt;/SPAN&gt;&lt;SPAN id=l5p9656 style="COLOR: black; FONT-FAMILY: calibri"&gt; IQueryable(Of T) &lt;/SPAN&gt;&lt;SPAN id=l5p9657 style="COLOR: black; FONT-FAMILY: SimSun"&gt;对于远程执行，和&lt;/SPAN&gt;&lt;SPAN id=l5p9658 style="COLOR: black; FONT-FAMILY: calibri"&gt;IEnumerable(Of T) &lt;/SPAN&gt;&lt;SPAN id=l5p9659 style="COLOR: black; FONT-FAMILY: SimSun"&gt;对于本地执行&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt; &lt;DIV id=l5p9661&gt;&lt;/DIV&gt; &lt;DIV id=cd5j&gt;&lt;/DIV&gt; &lt;DIV class=MsoNormal id=l5p9705 style="MARGIN: 0in 0in 0pt"&gt;&lt;/DIV&gt; &lt;DIV id=l5p9706&gt; &lt;/DIV&gt; &lt;DIV class=MsoNormal id=cd5j4 style="MARGIN: 0in 0in 0pt"&gt; &lt;/DIV&gt; &lt;DIV class=MsoNormal id=cd5j5 style="MARGIN: 0in 0in 0pt"&gt; &lt;/DIV&gt; &lt;DIV class=MsoNormal id=cd5j6 style="MARGIN: 0in 0in 0pt"&gt; &lt;/DIV&gt;&lt;/FONT&gt; &lt;DIV id=hj.x7&gt; &lt;/DIV&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;DIV id=hj.x8&gt; &lt;/DIV&gt;&lt;/FONT&gt; &lt;BLOCKQUOTE id=r__7 dir=ltr style="MARGIN-RIGHT: 0px"&gt; &lt;DIV id=hj.x9&gt; &lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;/FONT&gt; &lt;P id=hj.x10&gt; &lt;/P&gt;&lt;/FONT&gt; &lt;P id=hj.x11&gt; &lt;/P&gt;&lt;/FONT&gt; &lt;P id=hj.x12&gt; &lt;/P&gt;&lt;/FONT&gt; &lt;P id=hj.x13&gt; &lt;/P&gt;&lt;/FONT&gt;&lt;BR id=hebg&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1539264213384076775-8926497484541695795?l=blog.sonofvb.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SonOVB/~4/4i0SJqmXNPU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sonofvb.net/feeds/8926497484541695795/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1539264213384076775&amp;postID=8926497484541695795" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/8926497484541695795?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/8926497484541695795?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SonOVB/~3/4i0SJqmXNPU/linqimplementing-dynamic-searching.html" title="" /><author><name>G yc{Son of VB.NET}</name><uri>http://www.blogger.com/profile/10642280584042013225</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14927754176143394902" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.sonofvb.net/2008/08/linqimplementing-dynamic-searching.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUERnc7fSp7ImA9WB9XEUU.&quot;"><id>tag:blogger.com,1999:blog-1539264213384076775.post-668363390422703390</id><published>2007-11-04T21:50:00.001+08:00</published><updated>2007-11-04T21:50:07.905+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-04T21:50:07.905+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="开源" /><category scheme="http://www.blogger.com/atom/ns#" term="程序分享" /><title>Converter</title><content type="html">&lt;p&gt;以前自己做的 字符串编码转换程序，&amp;#xA0; 发出来共享 一下～&lt;/p&gt;  &lt;p&gt;&amp;#xA0;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.codeplex.com/Converter" href="http://www.codeplex.com/Converter"&gt;http://www.codeplex.com/Converter&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#xA0;&lt;/p&gt;  &lt;p&gt;&lt;img id="id" src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=Converter&amp;amp;DownloadId=21260" /&gt;&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1539264213384076775-668363390422703390?l=blog.sonofvb.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SonOVB/~4/l9g9KMZM_0M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sonofvb.net/feeds/668363390422703390/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1539264213384076775&amp;postID=668363390422703390" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/668363390422703390?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/668363390422703390?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SonOVB/~3/l9g9KMZM_0M/converter.html" title="Converter" /><author><name>G yc{Son of VB.NET}</name><uri>http://www.blogger.com/profile/10642280584042013225</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14927754176143394902" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.sonofvb.net/2007/11/converter.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8GR34_eCp7ImA9WB9SFEQ.&quot;"><id>tag:blogger.com,1999:blog-1539264213384076775.post-5060209418310737283</id><published>2007-10-04T18:13:00.003+08:00</published><updated>2007-10-04T18:13:46.040+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-10-04T18:13:46.040+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="总结" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET 3.0" /><category scheme="http://www.blogger.com/atom/ns#" term="WCF" /><title>WCF 基础之契约（Contract）</title><content type="html">&lt;blockquote&gt;   &lt;p&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0; 在WCF 中包含 4 种契约，分别是Service Contract， Data Contract， Message Contract，以及定义错误异常的 Fault Contract。它们算是WCF的核心之一，如果你要使用WCF，就需要了解他们。&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;正文在这里&lt;a href="http://docs.google.com/Doc?id=dggdkn6_132fwt6cm"&gt;http://docs.google.com/Doc?id=dggdkn6_132fwt6cm&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;(PS. 如果讨厌这个跳转的话可以说一下，我会把原文粘贴过来，不过管理起来有点费劲了）&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1539264213384076775-5060209418310737283?l=blog.sonofvb.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SonOVB/~4/XM86sR8GfuE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sonofvb.net/feeds/5060209418310737283/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1539264213384076775&amp;postID=5060209418310737283" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/5060209418310737283?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/5060209418310737283?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SonOVB/~3/XM86sR8GfuE/wcf-contract.html" title="WCF 基础之契约（Contract）" /><author><name>G yc{Son of VB.NET}</name><uri>http://www.blogger.com/profile/10642280584042013225</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14927754176143394902" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.sonofvb.net/2007/10/wcf-contract.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8FR38yfSp7ImA9WB9SFEQ.&quot;"><id>tag:blogger.com,1999:blog-1539264213384076775.post-4690037724973326859</id><published>2007-10-04T18:13:00.001+08:00</published><updated>2007-10-04T18:13:36.195+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-10-04T18:13:36.195+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="总结" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET 3.0" /><category scheme="http://www.blogger.com/atom/ns#" term="WCF" /><title>WCF 基础之绑定（Binding）</title><content type="html">&lt;p&gt;最近看WCF的实例，简单总结一下。虽然这么说，但差不多算是搜集一些常用的资料。(自己知道文笔不好写的很差，如果有有错，请指正）&lt;/p&gt;  &lt;p&gt;正文在这里 &lt;a href="http://docs.google.com/Doc?id=dggdkn6_138f4xwv4"&gt;http://docs.google.com/Doc?id=dggdkn6_138f4xwv4&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;(PS. 如果讨厌这个跳转的话可以说一下，我会把原文粘贴过来，不过管理起来有点费劲了）&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1539264213384076775-4690037724973326859?l=blog.sonofvb.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SonOVB/~4/Qj3tNRz3CXs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sonofvb.net/feeds/4690037724973326859/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1539264213384076775&amp;postID=4690037724973326859" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/4690037724973326859?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/4690037724973326859?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SonOVB/~3/Qj3tNRz3CXs/wcf-binding.html" title="WCF 基础之绑定（Binding）" /><author><name>G yc{Son of VB.NET}</name><uri>http://www.blogger.com/profile/10642280584042013225</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14927754176143394902" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.sonofvb.net/2007/10/wcf-binding.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIDQ3c9fCp7ImA9WB9TF0Q.&quot;"><id>tag:blogger.com,1999:blog-1539264213384076775.post-1340314772557101888</id><published>2007-09-26T17:02:00.000+08:00</published><updated>2007-09-26T17:06:12.964+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-09-26T17:06:12.964+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET 3.0" /><category scheme="http://www.blogger.com/atom/ns#" term="WCF" /><title>WCF初探总结</title><content type="html">简单总结了一下，现在自己已经学过的东西。&lt;br /&gt;&lt;br /&gt;正文在这里 &lt;a class="tabcontent" id="publishedDocumentUrl" href="http://docs.google.com/Doc?id=dggdkn6_125gdms8k" target="_blank"&gt;http://docs.google.com/Doc?id=dggdkn6_125gdms8k&lt;/a&gt;&lt;br /&gt;使用 Google 文档制作。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1539264213384076775-1340314772557101888?l=blog.sonofvb.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SonOVB/~4/2M4Be8qM83U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sonofvb.net/feeds/1340314772557101888/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1539264213384076775&amp;postID=1340314772557101888" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/1340314772557101888?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/1340314772557101888?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SonOVB/~3/2M4Be8qM83U/wcf_26.html" title="WCF初探总结" /><author><name>G yc{Son of VB.NET}</name><uri>http://www.blogger.com/profile/10642280584042013225</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14927754176143394902" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.sonofvb.net/2007/09/wcf_26.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIDSHw7cCp7ImA9WBBbFE4.&quot;"><id>tag:blogger.com,1999:blog-1539264213384076775.post-4813479292718611640</id><published>2007-01-10T21:37:00.000+08:00</published><updated>2007-01-10T21:59:39.208+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-01-10T21:59:39.208+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="程序分享" /><title>StarTrooper 简单的MDX游戏</title><content type="html">这个是我参照MSDN 的WebCast 做的，语言换成了VB.NET，使用的是2006 十月的 DX SDK&lt;br /&gt;&lt;br /&gt;PS.最近网络有点问题，上传可能有问题，要是下载代码损坏，请通知我，我会及时更新的。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://groups-beta.google.com/group/SonofVBNet/web/startrooper-mdx"&gt;http://groups-beta.google.com/group/SonofVBNet/web/startrooper-mdx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;下载地址：&lt;a href="http://groups-beta.google.com/group/SonofVBNet/web/StarTrooper.rar?_done=%2Fgroup%2FSonofVBNet%2Fweb%2Fstartrooper-mdx%3Fmsg%3Dns"&gt;http://groups-beta.google.com/group/SonofVBNet/web/StarTrooper.rar?_done=%2Fgroup%2FSonofVBNet%2Fweb%2Fstartrooper-mdx%3Fmsg%3Dns&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1539264213384076775-4813479292718611640?l=blog.sonofvb.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SonOVB/~4/9JYVS0r8Oi4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sonofvb.net/feeds/4813479292718611640/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1539264213384076775&amp;postID=4813479292718611640" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/4813479292718611640?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/4813479292718611640?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SonOVB/~3/9JYVS0r8Oi4/startrooper-mdx.html" title="StarTrooper 简单的MDX游戏" /><author><name>G yc{Son of VB.NET}</name><uri>http://www.blogger.com/profile/10642280584042013225</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14927754176143394902" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.sonofvb.net/2007/01/startrooper-mdx.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMMRXk_cSp7ImA9WBBUFUs.&quot;"><id>tag:blogger.com,1999:blog-1539264213384076775.post-882858410529365791</id><published>2006-12-31T20:34:00.001+08:00</published><updated>2006-12-31T20:34:44.749+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2006-12-31T20:34:44.749+08:00</app:edited><title>申请一个论坛</title><content type="html">&lt;div&gt;为这个BLog创建一个论坛， 其实，我刚才想发点代码上来的，结果发现这里不能上传附件，所以只好申请一个论坛了～～～&lt;br&gt;&amp;nbsp;&lt;br&gt;地址如下，旁片也有哦！！～～～&lt;br&gt;&lt;a href="http://groups-beta.google.com/group/SonofVBNet/"&gt;http://groups-beta.google.com/group/SonofVBNet/&lt;/a&gt;&lt;/div&gt;&lt;br clear="all"&gt;&lt;br&gt; -- &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; G yc&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Son of &lt;a href="http://VB.NET"&gt;VB.NET&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1539264213384076775-882858410529365791?l=blog.sonofvb.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SonOVB/~4/rxnFGlGOAxE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sonofvb.net/feeds/882858410529365791/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1539264213384076775&amp;postID=882858410529365791" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/882858410529365791?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/882858410529365791?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SonOVB/~3/rxnFGlGOAxE/blog-post_1574.html" title="申请一个论坛" /><author><name>G yc{Son of VB.NET}</name><uri>http://www.blogger.com/profile/10642280584042013225</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14927754176143394902" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.sonofvb.net/2006/12/blog-post_1574.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEEQ3szeyp7ImA9WBBWGEg.&quot;"><id>tag:blogger.com,1999:blog-1539264213384076775.post-1269735608718291742</id><published>2006-12-11T23:49:00.009+08:00</published><updated>2006-12-11T23:56:42.583+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2006-12-11T23:56:42.583+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="东拼西凑" /><title>哈哈测试</title><content type="html">为自己注册了一个新的Blog&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1539264213384076775-1269735608718291742?l=blog.sonofvb.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SonOVB/~4/4eMBgj8q9VM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.sonofvb.net/feeds/1269735608718291742/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1539264213384076775&amp;postID=1269735608718291742" title="1 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/1269735608718291742?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1539264213384076775/posts/default/1269735608718291742?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SonOVB/~3/4eMBgj8q9VM/blog-post_6918.html" title="哈哈测试" /><author><name>G yc{Son of VB.NET}</name><uri>http://www.blogger.com/profile/10642280584042013225</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="14927754176143394902" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://blog.sonofvb.net/2006/12/blog-post_6918.html</feedburner:origLink></entry></feed>
