> # Desarrollo de Tipos de Contenido

> El Modelo de Objetos de SharePoint ofrece todas las clases, métodos y propiedades para trabajar con Tipos de Contenido programáticamente. Un Tipo de Contenido esta definido por la clase "SPContentType", y los Tipos utilizados en un sitio o en una Librería son agrupados en una colección del tipo "SPContentTypeCollection".

> ### Examinador de Objetos de Visual Studio con el Modelo de Objetos para Tipos de Contenido

> Cada sitio ("SPWeb") y cada Librería ("SPList") de SharePoint tiene una propiedad "ContetTypes", que contiene la colección de Tipos de Contenido. A su vez, cada Tipo de Contenido definido por "SPContentType" tiene una colección de campos del tipo "SPFieldCollection", que define el agrupamiento de columnas (del tipo "SPField") para contener los metadatos.

> Cada una de estas clases permite crear, editar y eliminar Tipos de Contenido, manejar sus campos y vincular un Tipo de Contenido a una Librería o Lista.

> Nota: Cada Librería por defecto de SharePoint contiene un Tipo de Contenido "Carpeta" que es invisible desde la interface de las páginas de administración, pero que se puede ver y manipular desde el Modelo de Objetos. Este Tipo de Contenido define el nombre y titulo de la Librería misma.

> El Modelo de Objetos de SharePoint permite, por ejemplo, mostrar una lista de todos los Tipos de Contenido presentes en el Portal, y las propiedades que indican su titulo y el grupo al que pertenece, como las siguientes líneas de código muestran:

>      SPSite miSite = SPControl.GetContextSite(Context);
>      SPWeb miWeb = miSite.OpenWeb();

>      SPContentTypeCollection misTipos = miWeb.ContentTypes;
>      foreach (SPContentType miTipo in misTipos)
>      {
>          Response.WriteLine(miTipo.Name + " - " + miTipo.Group);
>      }

> De la misma forma, agregar un nuevo Tipo de Contenido a una Libreria puede ser realizado con un par de líneas de código:

>     SPContentTypeCollection todosMisTipos = miWeb.ContentTypes;
>     SPContentType miNuevoTipo = todosMisTipos["Tarea"];
>     misTipos.Add(miNuevoTipo);

> Y eliminar el campo puede ser realizado de la misma forma

>     SPContentType miTipo = miWeb.ContentTypes["Tarea"];
>     todosMisTipos.Delete(miTipo.Id);

> ## Video

> Crear y eliminar Tipos de Contenido en tiempo de ejecución y progamaticamente, así como examinar y acoplar Tipos de Contenido a Librerías, es demostrado en el siguiente video.
> Duración: 8:01 minutos