用C#写组件

这一章关于用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实行十分简单的检查,如果它不适合,就会引发一个
Arg
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值