接着可以使用命令行参数执行该应用程序。例如,以 microsoft.com参数执行
whoisclnt microsoft.com
当查询运行成功时,就会出现 microsoft.com的注册信息。(清单8.6 显示了输出的简略版本) 这是一个很方便的小程序,通过组件化的途径写成的,花不到一个小时。如果用C++编写,要花多长时间?很幸运,我再也想不起当第一次用C++这样做时,花了多长的时间。
清单 8.6 有关 microsoft.com (简略) 的Whois 信息
D:\CSharp\Samples\Namespace>whoisclient
……
registrant:
Microsoft Corporation (MICROSOFT-DOM)
1 microsoft way
redmond, WA 98052
US
Domain Name: MICROSOFT.COM
Administrative Contact:
Microsoft Hostmaster (MH37-ORG) msnhst@MICROSOFT.COM
Technical Contact, Zone Contact:
MSN NOC (MN5-ORG) msnnoc@MICROSOFT.COM
Billing Contact:
Microsoft-Internic Billing Issues (MDB-ORG) msnbill@MICROSOFT.COM
Record last updated on 20-May-2000.
Record expires on 03-May-2010.
Record created on 02-May-1991.
Database last updated on 9-Jun-2000 13:50:52 EDT.
Domain servers in listed order:
ATBD.MICROSOFT.COM 131.107.1.7
DNS1.MICROSOFT.COM 131.107.1.240
DNS4.CP.MSFT.NET 207.46.138.11
DNS5.CP.MSFT.NET 207.46.138.12
8.2.3 增加多个类到名字空间
使WhoisLookup和RequestWebPage 类共存于同一个名字空间是多么的美妙。既然WhoisLookup已是名字空间的一部分,所以你只须使RequestWebPage 类也成为该名字空间的一部分。必要的改变很容易被应用。你只需使用名字空间封装RequestWebPage 类就可以了:
namespace Presenting.CSharp
{
public class RequestWebPage
{
……
}
}
尽管两个类包含于两个不同的文件,但在编译后,它们都是相同名字空间的一部分:
csc /r:System.Net.dll /t:library /out:presenting.csharp.dll whois.cs webrequest.cs
你不必要按照名字空间的名字给DLL命名。然而,这样做会有助你更容易你记住,当编译一个客户应用程序时要引用哪一个库。
8.3 小结
在这一章中,你学到了如何构建一个可以在客户程序中使用的组件。最初,你不必关心名字空间,但后面第二个组件中介绍了该特性。名字空间在内外部均是组织应用程序的好办法。
C#中的组件很容易被构建,而且只要库和应用程序共存于相同的目录,你甚至不必进行特殊的安装。当要创建必须被多个客户使用的类库时,步骤就有所改变——而下一章将会告诉你为什么。

