> # Desarrollo de Características

> El Modelo de Objetos de SharePoint provee todas las clases y métodos necesarios para enumerar y controlar Características de una forma programática. Utilizando el Modelo de Objetos se pueden ver y modificar las propiedades de una Característica.

> Las clases principales para trabajar con Características son las siguientes:

> - SPFeature y SPFeatureCollection: Representa una Característica y la colección de Características presentes en un Sitio o Web. Determina si la Característica esta activada o no, su alcance (Scope) y su colección de propiedades (del tipo "SPFeatureProperty"). Por medio de la colección SPFeatureCollection se pueden instalar Características programáticamente (métodos "Add" y "Remove"), y por medio de SPFeature se pueden activar y desactivar (métodos "Activate" y "Deactivate").

> ### Figura 1: Explorador de Objetos de Visual Studio con el Modelo de Objetos para Características

> - SPFeatureProperty y SPFeaturePropoertyCollection: Representa una propiedad y la colección de propiedades de una Característica

> - SPFeatureDependency y SPFeatureDependencyCollection: Representa las dependencias de una Característica. Una Característica puede depender de una o mas Características para poder realizar su trabajo (y poder ser activada). Las dependencias se pueden definir en el archivo "Feature.xml", o, programáticamente, por medio de estas clases.

> Las clases de nivel superior "SPSite" y "SPWeb" contienen propiedades para enumerar las Características del Sitio o del Web. El siguiente ejemplo enumera todas las Características presentes en un sitio determinado por el contexto:

>     SPSite miSite = SPControl.GetContextSite(Context);
>     SPWeb miWeb = miSite.OpenWeb();
>     SPFeatureCollection misFeatures = miWeb.Features;
>     System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo(3082);

>     foreach (SPFeature miFeature in misFeatures)
>     {
>         Response.Write("Title: " + miFeature.Definition.GetTitle(cultureInfo) +
>              "<BR>ID:" + miFeature.DefinitionId.ToString() + "<BR><BR>");
>     }

> Las Características activan eventos cuando su estado es cambiado, es decir, cuando son instaladas, activadas, desactivadas o desinstaladas. Por medio de estos eventos se puede controlar programáticamente que ha sucedido con una Característica, pero como los eventos son lanzados posteriormente a la acción misma, es imposible cancelar o cambiar la acción que originó el evento.

> Dos clases del Modelo de Objetos controlan los eventos generados por Características:

> - SPFeatureReceiver: Clase de Base Abstracta que puede ser sobrescrita para atrapar los eventos que ocurren en la instalación, activación, desactivación o desinstalación.

> - SPFeatureReceiverProperties: Contiene las propiedades del evento generado, como, por ejemplo, la definición de la Característica, a que objeto pertenece, etc.

> ## Video

> Indicaciones sobre la utilización del Modelo de Objetos de SharePoint son dados en el video. Como programar los eventos de una Característica, y alguna posible utilización.
> Duración: 8:12 minutos