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.