1

インターフェイスを使い始めたのですが、よくわかりません...状況は次のとおりです。リピーターを使用してアイテムのテーブルを表示する Web コントロール (TableControl と呼ばれる) があります。TableControl には、ページングを実装するカーソルの行 (最初、前、次、最後) も含まれています。カーソルは、別の webControl (CursorControl) からインポートされます。TableControl は、ページングを行うメソッドを宣言するインターフェイスも実装します。

*) カーソルコントロール

 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();
    }

}

*) テーブルコントロール

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 に渡され、メソッド OtherPage が開始されます。しかし、それは機能しません。OtherPage は現在のコンテキストにないと言われています。

インターフェイスのメソッドにアクセスするにはどうすればよいですか??

4

1 に答える 1

1

次の行を作成する必要があります。

void IPageableControl.OtherPage(int i)

これに:

void OtherPage(int i)

1 つ目は明示的で、2 つ目は暗黙的です。(違いは何ですか? )

  • インターフェイスの型を明示的に言及する場合、それらのメソッドにアクセスするには、型をそれに変換する必要があります。(なぜインターフェイスを明示的に実装するのですか? )
  • 暗黙的に実装する場合は、それを通常のメソッドとして扱うだけです (実装はまったく同じであり、コンパイラはそれがそこにあることを確認するので、心配する必要はありません。コードでは違いは見られません。 見たい場合は (これが役立ちます)、プラグインを入手できます. ReSharper はこれを非常にうまく行います)。

ちなみに、Visual Studio でインターフェイスを実装したい場合は、インターフェイス名の上でCtrl+ .(ドット) を押すと、実装方法を尋ねられます。署名 (メソッド名) を自分で入力する必要がないため、退屈さが大幅に軽減されます。

インターフェイスを実装する Visual Studio

于 2013-01-30T12:04:34.290 に答える