2009-11-18 7 views
0

Je travaille sur un projet webform, où je veux implémenter MVP Pattern. J'ai parcouru quelques articles et projets basés sur MVP. Cela me semble bien.MVP Pattern, Interfaces, Affichage des messages d'erreur dans Webform

Dans la plupart des cas, s'il est nécessaire d'afficher un message d'erreur, une méthode a été définie dans l'interface d'affichage. Je donne un exemple ici pour plus de clarté.

public interface IAdminSettingsView 
{ 
    string Name { get; set; } 
    string Password { get; set; } 
    string Email { get; set; } 
    void ShowErrorMessage(string errorMessage); 
} 

ici est ma commande en œuvre 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 
} 

ici est mon présentateur

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"); 

     } 

    } 

} 

Ma question est, comment puis-je séparer erreur les messages associés dans une autre interface, puis faire un communication entre eux. par exemple si j'ai une interface

interface IShowErrorMessage 
{ 
    //somemethod here 
} 

comment utiliser cette interface pour fonctionner avec mon interface IAdminSettingsView principale.

Votre aide sera appréciée. S'il y a une meilleure solution à ce problème, j'aimerais entendre.

Cordialement Parminder

Répondre

0

Au niveau le plus bas (par exemple la DLL Utility) je mets les cours pour le traitement des erreurs. L'un d'eux est une interface que les formes peuvent implémenter. Au démarrage, le logiciel enregistre le formulaire implémentant l'interface avec la DLL de bas niveau. Cette forme peut être définie au plus haut niveau (l'EXE). Lorsqu'une erreur se produit à n'importe quel niveau du logiciel, les appels appropriés peuvent être faits à la structure d'erreur et si un formulaire implémente l'interface d'erreur d'affichage, alors un formulaire s'affichera à ce point. En aparté, je le fais aussi pour les messages d'état et de progression. Il y a une interface IStatusDisplay et une interface IProgressDisplay. L'EXE enregistre les formulaires ou les classes qui implémentent ces interfaces.

0

D'abord, dans IShowErrorMessage, définissez les propriétés/méthodes nécessaires pour afficher un message d'erreur.

Quelque chose comme:

interface IShowErrorMessage 
{ 
    void Show(string errorMessage); 
} 

Ensuite, votre point de vue mettra en œuvre cette interface. L'implémentation de la vue de Show (string) configurera un littéral.

Le présentateur restera inchangé.

Créez des tests unitaires et vous êtes bon!

Espérons que ça aide.