MVP没有实现Interface方法

时间:2013-01-08 09:21:28

标签: c# asp.net interface mvp

我是MVP设计模式的新手,所以我正在关注this guide

所以我正在尝试重新创建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方法。所以在最后一个左右我想弄清楚什么是错的。

这是错误的指南还是我做错了什么?

1 个答案:

答案 0 :(得分:2)

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

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

旁注:使用Pascal大小写来表示类名(按惯例)