Métodos de grabación de extensión para SharePoint

Los métodos de extensión son una formidable construcción de programación que aumentan la abstracción y la aplicación modularizar los segmentos de código, se presta bien para llenar las lagunas que puedan estar presentes en un sitio cerrado de la API, como la que ofrece SharePoint. Con frecuencia, no puede ser un método particular que es deseable en un tipo particular, sin embargo las opciones de siempre que no están disponibles en la API enviado debido a sellar y modifica otras. Usando métodos de extensión, es posible evitar esta limitación, manteniendo una implementación limpia que ayuda a evitar las referencias profundas árbol de herencia.

Los métodos de extensión son cada vez más importante cuando se trabaja con el código de SharePoint, porque la mayoría de los objetos que normalmente mandato personalizaciones de comportamiento, por ejemplo, sobre tipos SPList, está decorado con un acceso cerrado modificada negando así la herencia posible. Esto es más apreciable cuando se trabaja con objetos simulacro, que fuera de ciertos marcos (es decir, Typemock) requieren una clase sin sellar y un constructor por defecto.

En contra de conceder la definición de método en la clase, un método de extensión se define simplemente por una asociación y contenidos en una clase separada estática con el apoyo de clase parcial construcciones (es decir, debe existir en un espacio de nombres en el ámbito actual). El mismo método se invoca mediante la sintaxis del método de instancia, lo que permite una cierta familiaridad en el nivel de construcciones de código. Mientras que el método es estático, se puede llamar sólo en casos definidos en los parámetros. En esencia, un método de extensión permitirá que la inyección de un método en otra clase, por lo que se declara como si fuera parte de ella.

A fin de reducir la ambigüedad método debido a los métodos de las extensiones que se define sólo por el nombre del método, es importante tener en cuenta la convención de nomenclatura adecuada (de hecho, si la firma es la misma que la extensión será tenida en cuenta!). Por otra parte, los tipos de SharePoint, que se extenderán Naturalmente, son aplicables a la revisión de la API, como se presenta por MSFT. Por lo tanto, cuando los cambios en el API, no puede ser el nivel deseado de compatibilidad hacia atrás.

La sintaxis de un método de extensión es muy simple (es importante notar que mientras VB.NET requiere el atributo de extensión que se determine, C # no. Sin embargo, en C # nos vemos obligados a crear una copia del objeto / valor de retorno por lo que iguala hacia fuera!).

C #:
  1. Extensions Extensiones estática clase pública
  2. (
  3. this Type type ) Tipo de público HacerAlgo estática (este tipo de tipo)
  4. (
  5. / / Vamos a poner algo en marcha!
  6. )
  7. )

Usted puede ver que en la clase de Extensiones de estática el método HacerAlgo tiene su único parámetro decorado con el modificador de la palabra clave de esto, para indicar el tipo al que este método se extenderá. Así, por ejemplo al escribir los métodos de extensión para extender la clase SPList (sin ningún parámetro adicional), nuestra clase sería así:

C #:
  1. Extensions Extensiones estática clase pública
  2. (
  3. this SPList list ) Tipo de público HacerAlgo estática (esta lista SPList)
  4. (
  5. / / Vamos a poner algo en marcha!
  6. )
  7. )

Pero eso no está haciendo mucho, así que vamos a tomar un ejemplo más pragmático.

En el siguiente, estoy asumiendo que dentro de una aplicación, en los objetos SPList, yo voy a ser con frecuencia reordenamiento de la instancia actual de recogida SPListItem en un orden descendente por la fecha de modificación, y luego recuperar los últimos 5 artículos.

En el HarvestLastFive, se nota que estoy en primer lugar, especificando el tipo de destino mediante la palabra clave de este con el tipo SPList. Después, estoy construyendo un SPListItemCollection del SPList.Items, que después utiliza el método de LINQ OrderByDescending en combinación con la propiedad SPBuiltInFieldId.Modified para manejar el pedido. Por último, Take muestra los primeros 5 artículos de la colección modificada. Si lo que quería el cambio de orden (una variedad de extensiones que utilizo dicho uso modificadores colección LINQ para el apoyo manipulación mejorada) que acaba de sacar la Toma declaración.

C #:
  1. Extensions Extensiones estática clase pública
  2. (
  3. this SPList typeToTarget ) public static IEnumerable <SPListItem> HarvestLastFive (este typeToTarget SPList)
  4. (
  5. intentar
  6. (
  7. recogida SPListItemCollection = typeToTarget. artículos;
  8. x => x [ SPBuiltInFieldId. Modified ] ) . Take ( 5 ) ; finalCollection var = tempCollection. OrderByDescending (x => x [SPBuiltInFieldId. Modificado]). Tome (5);
  9. finalCollection retorno;
  10. )
  11. Exception exception ) catch (salvo excepciones)
  12. (
  13. )
  14. return null;
  15. )
  16. )

Se puede ver en los miembros de la clase de extensiones, que el método HarvestLastFive tiene un icono diferente (poco flecha hacia abajo) que especifica como un método de extensión.

extensionInVsNet Writing Extension Methods for SharePoint

Utilizando el método en una clase es analgous a otros métodos disponibles en ese tipo. Por ejemplo, el método HarvestLastFive toma la forma:

C #:
  1. public static void TestingExtensionMethod ()
  2. (
  3. . Lists [ "My List" ] ; lista SPList = SPContext. actual. Web. Listas ["Mi lista"];
  4. ; var = colección lista. HarvestLastFive ();
  5. / / Haz lo que quieras!
  6. )

En Visual Studio, este método se observa como un método de extensión de la información sobre herramientas con el prefijo (extensión).

extensionUsed Writing Extension Methods for SharePoint

De esta manera tendrás suficiente para seguir adelante en los métodos de extensión. Voy a publicar algunos de mis métodos de extensión común que uso con SharePoint en breve, ya que esto estaba destinado a ser una introducción.

  • Compartir / Guardar

4 Comentarios »

  1. [...] Este artículo es también porque la gente decía que necesitaban un método de extensión más reutilizable (de aquí) ejemplo que aprovechó de SharePoint. Los tiranos! Mientras yo estaba haciendo una revisión de código que aprovechó algunos de los segmentos calendario de SharePoint he encontrado este problema surgen. Al pasar los parámetros de la fecha en SPUtility.FormatDate se espera que sea en el mar, que en mi caso particular, tan bien como yo asumiría los demás, no era exacta ya que se almacenan como hora local. Esto se puede superar mediante el uso de los métodos proporcionados por la clase SPWeb.RegionalSettings.TimeZone, lo que permitirá un análisis adecuado que se produzca en los objetos SPWeb para admitir la conversión adecuado. [...]

    Pingback por SharePoint Vivienda »Blog Archive» Recuerde cuando se utiliza SPUtility.FormatDate Para (método de extensión UTC) - 29 de septiembre de 2008 @ 11:17 am

  2. [...] Interesante ARTÍCULO DE Adán Buenz Sobre Como Construir Métodos de extensión párr SharePoint. [...]

    Pingback por WSS 3.0 y MOSS: Recopilatorio de enlaces Interesantes (XXII! «Pasión por la Tecnología ...) - 04 de noviembre 2008 @ 8:51 am

  3. [...] Dando un paso más allá y de usar la técnica que Adán Buenz blogged sobre Métodos de Extensión en la escritura para SharePoint es incorporado en la clase SPList así: [...]

    Pingback por isea (sólo para usuarios de iPod y iTouch) - 01 de febrero 2009 @ 24:57

  4. [...] Método consiste en ampliar el objeto SPList escribiendo Métodos Extensiones. Esto se describe aquí, muchas gracias a Adán Buenz Publicado 09 de octubre 2009, 04:20 PM por Nadine Storandt Filed under: MOSS, [...]

    Pingback por SPList no tiene dirección URL predeterminada de la Propiedad - Mensajes de Nadine - developers.de - 09 de octubre 2009 @ 07:35 am

RSS feed para los comentarios de esta entrada. TrackBack URL

Deja tu comentario