1

MVP デザイン パターンは初めてなので、このガイドに従っています</p>

そこで、LoginModule(新しいパターンを試すためだけに) のガイドを再作成しようとしています。問題は、ガイドと同じようにすべてを行うことですが、それでもインターフェイスの実装の問題が発生しています。以下に私のコードを添付します:

プレゼンタークラス

public class UserPresenter
{
    AuthenticateView iObjAuthView;
    public void add(AuthenticateView ObjAuthView)
    {
        iObjAuthView = ObjAuthView;
    }

    public void Authenticate(User _model)
    {
        if (_model.UName == "" && _model.UPassword == "")
        {
            iObjAuthView.ResponseOnAuthenticate(AuthEnums.Authorized);
        }
        else if (_model.UName == "" && _model.UPassword != "")
        {
            iObjAuthView.ResponseOnAuthenticate(AuthEnums.InCorrectPassWord);
        }
        else
        {
            iObjAuthView.ResponseOnAuthenticate(AuthEnums.UserNotFound);
        }
    }
}

インターフェイス クラス

public interface AuthenticateView
{
      void ResponseOnAuthenticate(AuthEnums _authEnum);
}

UIpage(aspxページ)

public partial class login : System.Web.UI.Page, AuthenticateView
{
    private UserPresenter objPresenter = new UserPresenter();
    protected void Page_Load(object sender, EventArgs e)
    {
        objPresenter.add(this);
    }

    protected void LoginBtn_Click(object sender, EventArgs e)
    {
        objPresenter.Authenticate(new StockBO.User(EmailBox.Text, PasswordBox.Text));
    }

    public void Auth(AuthEnums _auth)
    {
        Label3.Text = _auth.ToString();
    }
}

ResponseToAuthenticateUI ページで、コンパイラは、インターフェースで定義されたメソッドを実装していないというエラーをスローします。それで、最後かそこらで、何が悪いのかを理解しようとしています。

間違っているのはガイドですか、それとも何か間違っているのは私ですか?

4

1 に答える 1

2

エラーが示すように、実装がinterface AuthenticateView意味する契約に拘束されます。

ResponseOnAuthenticate(authEnum) { //... }メソッドをに追加するclass loginと、うまくいくはずです。

補足: クラス名には Pascal の大文字小文字を使用します (慣例により)。

于 2013-01-08T09:30:49.467 に答える