Compartir a través de


Extender la funcionalidad con herencia

Actualización: noviembre 2007

Además de crear controles de usuario, se puede usar la herencia para ampliar la funcionalidad de las páginas Web de ASP.NET Mobile. Si se crea una clase que hereda de una clase de control ASP.NET Mobile existente, se le puede agregar funcionalidad reemplazando miembros existentes o creando nuevas propiedades, métodos y eventos para la clase.

Crear clases con herencia

En el ejemplo de código siguiente se muestra una nueva clase denominada CarList que hereda del control móvil List y que está especializada en la representación de información de automóviles. La clase CarList encapsula la información necesaria para enlazar con una lista de objetos Car.

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

Para obtener un ejemplo más detallado sobre cómo extender la funcionalidad de su control mediante herencia, vea los tutoriales rápidos de ASP.NET Mobile.

Implementar clases nuevas

Para utilizar esta clase de ejemplo, compile la clase en un ensamblado y colóquelo en la carpeta Bin de la aplicación. En el ejemplo siguiente se muestra cómo registrar un ensamblado denominado MyCompany.CarList.dll. El ensamblado se registra en una página mediante la directiva @ Register, especificando una etiqueta personalizada.

<%-- Register the myCompany.MobileControls namespace. --%>
<%@ Register TagPrefix="car" Namespace="myCompany.MobileControls" 
    Assembly="myCompany.CarList" %>
    // More code.
    <%-- Control declaration --%>
    <car:CarList id="myCarList"  />

Si el control heredado no modifica la funcionalidad de representación de la clase primaria, no necesita escribir un adaptador para la clase. En el ejemplo anterior, como cada control CarList también es un objeto List, se utiliza automáticamente el adaptador asignado al control List para el explorador actual, como HtmlListAdapter. Sin embargo, si se desea proporcionar una representación especializada del control CarList para un dispositivo dado, se puede escribir un adaptador y registrar la asignación en el archivo Web.config.

Vea también

Otros recursos

Agregar nuevos adaptadores de dispositivos y compatibilidad con dispositivos

Crear controles móviles personalizados