Consigliare un accoppiamento lento tra i controlli dell'utente

1

Ho 5 controlli utente sulla pagina e ogni controllo implementa la propria interfaccia che contiene proprietà ed eventi. Per abilitare la comunicazione tra i controlli utente, sto creando una proprietà del controllo utente di destinazione all'interno di altri controlli utente. Attraverso questa proprietà, lo stato può essere modificato ed essere in grado di registrare i suoi eventi.

Di seguito è riportato lo pseudo codice del controllo utente dei risultati. Si iscrive all'evento OnSearch di Search user control.

public interface IResults
{
     //other fields
    ISearch SearchControl { get;}
}

public partial class Results : IResults
{
 //other fields

 public ISearch SearchControl
 {

    get{
    this.Page.Parent.FindControl("UCSearch") as ISearch;}
 }

 protected override void Page_Load(object sender, EventArgs e)
 {
    this.SearchControl.OnSearch += new EventHandler(testMethod);
 }
}

Va bene avere le proprietà di riferimento all'interno dei controlli utente per iscriversi agli eventi e manipolare lo stato. In futuro creerà problemi di manutenzione.

FindControl e type casting degradano le prestazioni dell'applicazione.

    
posta Sunny 19.04.2014 - 00:24
fonte

1 risposta

3

In generale potresti voler stabilire nella tua architettura, una regola che controlli nel tuo progetto non conoscerà altri controlli. Se lo fanno, si può finire con spaghetti e difficoltà di riferimenti incrociati. Prendi in considerazione l'idea di introdurre un Mediatore, in cui solo il Mediatore è a conoscenza di tutti i controlli. Se un controllo desidera parlare con un altro controllo, può farlo solo tramite il Mediatore. Il controllo solleva un evento, che è messo in campo dal Mediatore. Il Mediatore ha conoscenza di ciò che questo evento significa per un altro controllo sulla pagina. Chiama quel controllo per fare il lavoro. Il controllo che ha generato l'evento non sa nemmeno che esiste l'altro controllo.

    
risposta data 19.04.2014 - 16:39
fonte

Leggi altre domande sui tag