第八章 用C#写组件

来源:互联网 责任编辑:栏目编辑 发表时间:2013-07-01 17:36 点击:
 这一章关于用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访问标志使它被公开了。
    有趣的事始于GetContent方法。首先,代码对URL实行十分简单的检查,如果它不适合,就会引发一个
ArgumentException 异常。之后,我请求WebRequestFactory ,以创建一个基于传递给它的URL的WebRequest对象。
    因为我不想发送coo
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • 用C#制作屏幕捕获程序
  • .NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上
  • 遍历ArrayList易犯错误
  • C#对XML操作:一个处理XML文件的类(1)
  • .NET简谈反射(动态调用)
  • 使用C#编写LED样式时钟控件
  • DataList嵌套问题 如何删除内层子DataList的记录
  • 怎样用C#实现完整文档打印功能
  • .NET简谈自定义事务资源管理器
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1