访问接口的方法

时间:2013-01-30 12:00:31

标签: c# interface

我开始使用接口,我真的不明白......情况是这样的: 有一个webcontrol(称为TableControl),它使用转发器显示项目表。 TableControl还包括一行实现分页的游标(first,previous,next,last)。游标从另一个webControl(CursorControl)导入。 TableControl还实现了一个接口,我在其中声明了一些方法来进行分页。

*)CursorControl

 public class CursorControl 
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    private string cursor_value;

    public string CursorValue
    {
        get { return cursor_value; }
        set { cursor_value = value; }
    }

    // Called when cursor is clicked.
    protected void lnkClick_Command(object sender, CommandEventArgs e)
    {
        cursor_value = e.CommandArgument.ToString();
    }

}

*)TableControl

public partial class TableControl : System.Web.UI.UserControl, IPageableControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if(isPostBack)
         {
               currentPage = CursorControl.CursorValue;
               OtherPage(currentPage);
          }
    }

    public int currentPage;

    void IPageableControl.OtherPage(int i)
    {
        if (i == 0)
            currentPage = 2;
        else if (i == 1 || i == (-1))
            currentPage += i;
        else
            currentPage = 25;

    }


 }

*)界面

   public interface IPageableControl
{
    // Summary:
    //     Go to page
    void OtherPage(int i);
}

当用户点击游标时,我将值传递给TableControl,TableControl应该启动方法OtherPage。但它不起作用,它说OtherPage不在当前的上下文中。

如何访问接口的方法??

1 个答案:

答案 0 :(得分:1)

你需要这一行:

void IPageableControl.OtherPage(int i)

进入这个:

void OtherPage(int i)

第一个是明确的,第二个是隐含的。 (What are the differences?

  • 当您明确提及接口类型时,您需要转换 你的类型,以便访问这些方法。 (Why implement interface explicitly?
  • 当您隐式实现时,只需将其视为一个 常规方法(实现完全相同,编译器将确保它在那里,所以你不必担心它。在代码中你不会看到任何差异。 如果你想看(有帮助)你可以得到一个插件.ReSharper做得很好)。

顺便说一句,在Visual Studio上,当你想要实现一个接口时,在界面名称上按 Ctrl + (点)它会问你如何实现它。它使得它不那么繁琐,因为你不必自己输入签名(方法名称)。

Visual Studio Implementing Interfaces