首页 | 互联网 | IT动态 | 网络设备 | 服务器 | IDC | 安全 | Cisco | Windows | Linux | Java | .Net | Oracle | CIW | 华为 | 专题
IT技术 | 网页设计 | 平面设计 | 电子书下载 | 教学视频 | 方案 | 数字网校 | 直播室 | 虚拟考场 | 面授培训 | 搜索 | 博客 | 沙龙 | 论坛
中国IT实验室Dotnet频道
中国IT教育
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> C# >> 文章正文

展现C#世界之八:用C#写组件

文章来源中国IT实验室收集整理 作者佚名 更新时间2007-11-29 保存本文保存本文 推荐给好友推荐给好友 收藏本页收藏本页

  这一章关于用C#写组件。你学到如何写一个组件,如何编译它,且如何在一个客户程序中使用它。更深入一步是运用名字空间来组织你的应用程序。

  这章由两个主要大节构成:

  。你的第一个组件

  。使用名字空间工作

  8.1 你的第一个组件

  到目前为止,在本书中提到的例子都是在同一个应用程序中直接使用一个类。类和它的使用者被包含在同一个执行文件中。现在我们将把类和使用者分离到组件和客户,它们分别位于不同的二进制文件中(可执行文件)。

  尽管你仍然为组件创建一个 DLL,但其步骤与用C++写一个COM组件差别很大。你很少涉及到底层结构。以下小节说明了如何构建一个组件以及使用到它的客户:

  。构建组件

  。编译组件

  。创建一个简单的客户应用程序

  8.1.1 构建组件

  因为我是一个使用范例迷,我决定创建一个相关Web的类,以方便你们使用。它返回一个Web网页并储存在一个字符串变量中,以供后来重用。所有这些编写都参考了。NET框架的帮助文档。类名为RequestWebPage;它有两个构造函数—— 一个属性和一个方法。属性被命名为URL,且它储存了网页的Web地址,由方法GetContent返回。这个方法为你做了所有的工作(见清单8.1)。

  清单 8.1 用于从Web服务器返回HTML网页的RequestWebPage 类

  1: using System;

  2: using System.Net

  3: using System.IO;

  4: using System.Text;

  5:

  6: public class RequestWebPage

  7: {

  8: private const int BUFFER_SIZE = 128;

  9: private string m_strURL;

  10:

  11: public RequestWebPage()

  12: {

  13: }

  14:

  15: public RequestWebPage(string strURL)

  16: {

  17: m_strURL = strURL;

  18: }

  19:

  20: public string URL

  21: {

  22: get { return m_strURL; }

  23: set { m_strURL = value; }

  24: }

  25: public void GetContent(out string strContent)

  26: {

  27: // 检查 URL

  28: if (m_strURL == "")

  29: throw new ArgumentException("URL must be provided.");

  30:

  31: WebRequest theRequest = (WebRequest) WebRequestFactory.Create(m_strURL);

  32: WebResponse theResponse = theRequest.GetResponse();

  33:

  34: // 给回应设置字节缓冲区

  35: int BytesRead = 0;

  36: Byte[] Buffer = new Byte[BUFFER_SIZE];

  37:

  38: Stream ResponseStream = theResponse.GetResponseStream();

  39: BytesRead = ResponseStream.Read(Buffer, 0, BUFFER_SIZE);

  40:

  41: //使用 StringBuilder 以加速分配过程

  42: StringBuilder strResponse = new StringBuilder("");

  43: while (BytesRead != 0 )

  44: {

  45: strResponse.Append(Encoding.ASCII.GetString(Buffer,0,BytesRead));

  46: BytesRead = ResponseStream.Read(Buffer, 0, BUFFER_SIZE);

  47: }

  48:

  49: // 赋给输出参数

  50: strContent = strResponse.ToString();

  51: }

  52: }

  本应该利用无参数构造函数完成工作,但我决定在构造函数中初始化URL,这可能会很有用。当后来决定要改变URL时——为了返回第二个网页,例如,通过URL属性的get和set访问标志使它被公开了。

[1] [2] [3] [4] [5] 下一页  

【责编:John】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 社区讨论
 博客论点
 Dotnet频道相关导航