Estensione di funzionalità mediante l'ereditarietà

Oltre ai controlli utente, è possibile utilizzare l'ereditarietà per estendere la funzionalità dell'applicazione Web mobile ASP .NET. Se si crea una classe che eredita da una classe esistente di controlli mobili ASP .NET, è possibile aggiungere ulteriori funzionalità mediante l'esecuzione dell'override dei membri esistenti o mediante la creazione di nuove proprietà, metodi ed eventi per la nuova classe.

Creazione di una classe mediante l'ereditarietà

Nell'esempio riportato di seguito viene mostrata una nuova classe, detta CarList, che rappresenta anche un controllo mobile List specifico per il rendering delle informazioni sulle automobili. La classe CarList include le informazioni necessarie per l'associazione a un elenco di oggetti Car.

[C#]

using System.Web.UI.MobileControls;

namespace myCompany.MobileControls
{
    class CarList : List
    {
        // Override OnInit, and set the DataValueField property
        // to the correct property of a Car object to use as the value
        // of each list item.
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            this.DataValueField = "id";
        }
    
        // Override OnItemDataBind, and set the list item display text
        // to a rich expression, containing the year, make, and model of
        // the car.
        protected override void OnItemDataBind(ListDataBindEventArgs e)
        {
            base.OnItemDataBind(e);

            CarInfo car = (Car)e.DataItem;
            e.ListItem.Text = 
              String.Format("{0}{1}{2}", car.Year, car.Make, car.Model);
        }
    }
}

Per un esempio più dettagliato di estensione delle funzionalità del controllo mediante l'ereditarietà, vedere la seguente Guida rapida sui controlli mobili: Sample.

Distribuzione di una nuova classe

Per utilizzare la nuova classe, lo sviluppatore deve compilarla in un assembly. Nell'esempio riportato di seguito, è necessario aggiungere l'assembly, denominato myCompany.CarList.dll, all'esempio di codice precedente per poter funzionare. È possibile quindi registrare l'assembly in una pagina utilizzando la direttiva @ Register, assieme a un tag personalizzato, come indicato nel codice riportato di seguito.

[C#]

// Append this code to the previous example.
<%-- Registers the myCompany.MobileControls namespace. --%>
<%@ Register TagPrefix="CarCtl" Namespace="myCompany.MobileControls" Assembly="myCompany.CarList" %>
    // More code.
    <%-- Control declaration -->
    <myCompany:CarList id="myCarList" runat="server" />

Se non vengono fornite nuove funzionalità di rendering oltre al rendering ereditato dalla classe padre, non è necessario scrivere un adattatore per la classe. Nell'esempio precedente, poiché ciascun controllo CarList è anche un elenco, viene utilizzato automaticamente l'adattatore List. Tuttavia, se si desidera disporre di un rendering specializzato del controllo CarList per un dispositivo specifico, è possibile scrivere un adattatore e registrare il mapping più specifico nel file Web.config.

Vedere anche

Aggiunta di nuovi adattatori di dispositivo e supporto per dispositivi