我正在开发一个webform项目,我想要实现MVP模式。 我已经完成了一些基于MVP的文章和项目。对我来说似乎很好。
在大多数地方,如果有任何需要显示错误信息,则已经完成 视图界面中的方法。为了清楚起见,我在这里给出了一个例子。
public interface IAdminSettingsView
{
string Name { get; set; }
string Password { get; set; }
string Email { get; set; }
void ShowErrorMessage(string errorMessage);
}
这是我的控件实现IAdminSettingsView
public partial class AdminSettingsEdit : BaseControl, IAdminSettingsView
{
private AdminSettingsPresenter _adminSettingsPresenter;
protected void Page_Load(object sender, EventArgs e)
{
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
_adminSettingsPresenter = new AdminSettingsPresenter(this);
}
protected void BtnSave_Click(object sender, EventArgs e)
{
_adminSettingsPresenter.Save();
}
#region Implementation of IAdminSettingsView
public string Name
{
get { return AdminName.Text; }
set { AdminName.Text = value; }
}
public string Password
{
get { return AdminPassword.Text; }
set { AdminPassword.Text = value; }
}
public string Email
{
get { return AdminEmail.Text; }
set { AdminEmail.Text = value; }
}
public void ShowErrorMessage(string errorMessage)
{
lblErrorMessage.Text = errorMessage;
}
#endregion
}
这是我的主持人
public class AdminSettingsPresenter
{
public AdminSettingsPresenter(IAdminSettingsView view)
{
_view = view;
}
private IAdminSettingsView _view;
public void Save()
{
try
{
//Trying Save Data Here
}
catch (Exception exception )
{
_view.ShowErrorMessage("Couldnt Save Data");
}
}
}
我的问题是,如何将错误相关消息分隔到不同的接口,然后在它们之间进行通信。例如,如果我有一个接口
interface IShowErrorMessage
{
//somemethod here
}
如何使用此界面使用我的主IAdminSettingsView界面。
我们将不胜感激。如果有更好的解决方案可以解决这个问题,我很乐意听到。
此致 成员Parminder
答案 0 :(得分:0)
在最低级别(例如Utility DLL),我将这些类放在错误处理中。其中一个是形成的接口可以实现。启动时,软件将实现接口的表单注册到低级DLL。此表单可以在最高级别(EXE)定义。
当软件的任何级别发生错误时,可以对错误框架进行适当的调用,如果表单实现了显示错误界面,则表单将显示在该点。
顺便说一句,我也是这样做的状态和进度消息。有一个IStatusDisplay接口和一个IProgressDisplay接口。 EXE注册实现这些接口的表单或类
答案 1 :(得分:0)
首先,在IShowErrorMessage中,定义显示错误消息所需的属性/方法。
类似的东西:
interface IShowErrorMessage
{
void Show(string errorMessage);
}
接下来,您的视图将实现该接口。 视图的Show(string)实现将设置一个文字。
演示者将保持不变。
创建一些单元测试,你很好!
希望它有所帮助。