Шаблон MVP, интерфейсы, отображение сообщений об ошибках в веб-форме - PullRequest
0 голосов
/ 18 ноября 2009

Я работаю над проектом веб-формы, где я хочу реализовать шаблон 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

Ответы [ 2 ]

0 голосов
/ 24 ноября 2009

Сначала в IShowErrorMessage определите свойства / методы, необходимые для отображения сообщения об ошибке.

Что-то вроде:

interface IShowErrorMessage
{
    void Show(string errorMessage);
}

Далее ваш взгляд реализует этот интерфейс. Реализация представления (строка) представления установит литерал.

Ведущий останется без изменений.

Создайте несколько юнит-тестов, и вы хороши!

Надеюсь, это поможет.

0 голосов
/ 18 ноября 2009

На самом низком уровне (например, Utility DLL) я поставил классы для обработки ошибок. Одним из которых является интерфейс, который формы могут реализовать. При запуске программа регистрирует форму, реализующую интерфейс с низкоуровневой DLL. Эта форма может быть определена на самом высоком уровне (EXE).

Когда происходит ошибка на любом уровне программного обеспечения, соответствующие вызовы могут быть сделаны для структуры ошибок, и если форма реализует интерфейс ошибок отображения, тогда форма будет отображаться в этой точке.

Кроме того, я делаю это и для сообщений о состоянии и прогрессе. Есть интерфейс IStatusDisplay и интерфейс IProgressDisplay. EXE регистрирует формы или классы, которые реализуют эти интерфейсы

...