我是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
方法。所以在最后一个左右我想弄清楚什么是错的。
这是错误的指南还是我做错了什么?
答案 0 :(得分:2)
正如错误所述,您必须遵守实施interface AuthenticateView
所暗示的合同。
将您的方法ResponseOnAuthenticate(authEnum) { //... }
添加到class login
,您应该没问题。
旁注:使用Pascal大小写来表示类名(按惯例)