1

我是 MVP 设计模式的新手,所以我正在遵循本指南‏</p>

因此,我正在尝试重新创建 a 指南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();
    }
}

在 UI 页面上,编译器会抛出一个错误,表明我没有实现ResponseToAuthenticate接口中定义的方法。所以最后一次,我试图找出问题所在。

是指南错了还是我做错了?

4

1 回答 1

2

正如错误所述,您必须遵守实施interface AuthenticateView暗示的合同。

添加你的方法ResponseOnAuthenticate(authEnum) { //... }class login你应该没问题。

附带说明:对类名使用 Pascal 大小写(按约定)

于 2013-01-08T09:30:49.467 回答