首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

10.2.1  创建Web Part提供程序

首先看看创建给其他Web Part发送数据的Web Part提供程序的过程。创建可以为另一个Web Part提供数据的Web Part,需要三步。

(1) 定义一个接口,指定在Web Part之间传送什么数据。

(2) 提供数据的Web Part要执行这个接口,包括编写接口中方法和属性的代码。

(3) 编写例程。处理提供程序中的连接。

1. 定义接口

对于要和其他Web Part通信的Web Part,必须执行一个可以传送数据的接口。在这个接口中,应指定执行该接口的对象必须支持的方法和属性。首先看看最简单的接口,其中只有一个属性,返回一个字符串。在Visual Basic 2005中,把接口定义在接口结构中。

Public Interface IBookInfo

   Property ISBN() As String

End Interface

C#的对应代码如下所示。

public interface IBookInfo:

{

   string ISBN

    {

     get;

     set;

    }

}

提示:

在声明接口中的属性时,不应为属性指定实际的代码体。接口只指定必须包含的属性和方法,但不指定代码——负责实现Web Part的代码,添加到接口中的方法也是这样,如本章后面所述。

可以在类外部的任一模块中定义接口。但最好在一个与接口同名的独立文件中定义接口。这样,接口可以在Solution Explorer中看到,便于将接口的管理与在源代码管理工具中管理代码相分离,另外,只要复制接口文件,就可以在项目之间复制接口。但如果要在项目之间共享接口,最好将接口文件放在一个独立的项目中,将它编译为一个DLL。之后,使用该接口的其他项目就只需添加对该DLL的引用。

在Visual Studio .NET中,要把新的接口文件添加到项目中,可以选择Project | Add New Item命令,在Add New Item对话框中,从列表中选择Interface,输入接口的名称,单击Add按钮。

提示:

接口的名称一般以字母I开头,例如IBookInfo。

2. 执行接口

下一步是修改Web Part,通过该接口提供数据。首先让Web Part执行刚才定义的接口。在Visual Basic 2005中,在类定义和Inherits语句的后面,给接口名称添加Implements关键字,就表示希望类执行一个接口。

Public Class ProviderPart

    Inherits System.Web.UI.WebControls.WebControl

    Implements IBookInfo

在C#中,把接口的名称添加到类定义的最后,之前加一个逗号,如下面的代码所示。

public class ProviderPart : System.Web.UI.WebControls.WebControl, IBookInfo

指定了要在Web Part中执行的接口后,就必须创建接口中指定的所有属性或方法(对于IBookInfo接口,只有一个属性)。在Visual Basic 2005中,可以给实现接口的例程指定任意名称,但约定是,例程的名称应与接口相同。执行接口的例程与以前编写的例程有两个区别。

●       执行接口的例程必须使用Implements关键字,把例程与接口中的方法或属性关联起来。

●       执行接口的例程必须与所关联的接口中的例程有相同的签名。例如,如果接口中的例程是一个属性,它没有参数,返回一个整数,则执行接口的例程也必须有一个不带参数、返回一个整数的属性。

提示:

方法或属性的定义(数据类型、属性的个数、属性是只读还是只写)称为方法或属性的签名。接口包含一系列方法和属性签名,但没有实际的代码—— 即没有执行代码。Web Part中的方法或属性有实际执行接口签名的代码。为了使Web Part中的方法或属性能工作,其签名必须匹配接口中的方法和属性执行的签名。在C#中,方法或属性名是签名的一部分。而在Visual Basic 2005中,方法或属性名不是签名的一部分,所以可以给方法和属性指定任意名称。

在下面的Visual Basic 2005示例中,创建了一个BookIdentifier例程,它关联到IBookInfo接口的ISBN属性上。与ISBN属性一样,BookIdentifier例程是一个没有参数、返回一个字符串的属性。

Property BookIdentifier() As String Implements IBookInfo.ISBN

  Get

    Return myData

  End Get

  Set (Value As String)

    myData = Value

  End Set

End Property

在C#中,不能给接口例程指定别名,但例程名必须包含接口名和例程名,中间用一个句点分开。

public class ProviderPart : WebControl, IBookInfo

  {

   string IBookInfo.ISBN

   {

      get

      {

         return MyData;

      }

      set

      {

         MyData = value;

      }

  }

3. 创建连接点

最后,需要为接口提供一个连接点方法。连接点方法是一个函数,它给Web Part提供程序返回一个引用。该函数的返回值是该提供程序的接口执行代码。

可以给这个方法指定任意名称,但为了说明这个方法是一个连接点,需要在例程中添加ConnectionProvider特性。必须给ConnectionProvider传送一个显示名称(这是在ConnectionsZone用户界面上使用的名称)。下面的Visual Basic 2005示例显示了IBookInfo接口的连接点。

<WebControls.WebParts.WebParts.ConnectionProvider("Provides ISBN", _

 "ISBNProvider")> Public Function IBookInfoProvider() As IBookInfo

    Return Me

End Function

C#的对应代码如下所示。

 [WebControls.WebParts.ConnectionProvider("Provides ISBN")]

public IBookInfo IBookInfoProvider()

{

  return this;

}

提示:

连接例程的命名约定是,使用接口名,其后加上Provider。

用一些业务逻辑编写与ISBN属性相关联的例程后,就有了一个给Web Part提供数据的Web Part。现在,需要创建一个Web Part使用程序,通过接口从Web Part提供程序中获取数据。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论