2012-01-03 20 views

Respuesta

1

Los métodos de extensión como su nombre indica amplían la funcionalidad o usabilidad del tipo de destino.

  1. Estos métodos se pueden agregar más tarde (que el tipo de tiempo de creación) después de que el tipo ya se haya publicado.
  2. Se pueden escribir por diferentes grupos de personas
  3. Los métodos de extensión pueden orientar las interfaces. (La alternativa habría sido tener un tipo de base común que tenga estos métodos o volver a implementarlos en cada tipo)
  4. Diferentes personas pueden extender el mismo tipo de forma diferente según sus necesidades.

El uso correcto de métodos de extensión puede eliminar el desorden ortogonal de la definición/implementación de tipo real (en lugar de enfocar la funcionalidad principal del tipo dentro de la definición de tipo).

Tomemos el ejemplo de LINQ: al proporcionar métodos de extensión a IEnumerable, podría apuntar a un gran número de tipos ya publicados (y un gran número de tipos que pueden escribirse en el futuro); ha separado la preocupación ortogonal, como consultar el tipo del tipo real.

+0

Artículo # 3 en la lista es totalmente erróneo. Describe completamente la mecánica de los métodos de extensión como se describe en su 'alternativa'. Además, ¿a qué te refieres con "consultar el tipo del tipo real"? –

+0

@ A.R., Quizás necesites explicar un poco lo que está * mal * en el n. ° 3. Un buen ejemplo para el n. ° 3 es 'IEnumerable ' - si la interfaz no puede ser objetivo por métodos de extensiones, entonces somebody tendría que escribir la implementación para todos esos métodos en tipos específicos (o su tipo de base común). – VinayC

+0

@ A.R.Además, utilicé el término "preocupación ortogonal, como consultar el tipo del tipo real" en el contexto de "IEnumerable", simplemente significa que diferentes colecciones como diccionario, lista, cola, conjunto, etc. tiene que proporcionar implementación para varios métodos de consulta (unión, recuento, primero, último, etc.). Esta lógica realmente no es la preocupación central para esas clases. – VinayC

1

Los métodos de extensión documentados se definen en IEnumerable<T>, que se implementa ObjectSet<T>.

Están documentados para que sepa que puede usarlos.

Como métodos de extensión terminan extendiendo cualquier tipo implementando esta interfaz, de forma gratuita.

3

Tenga en cuenta que muchos de estos métodos funcionan en interfaces, que es una excusa perfectamente legítima de usar métodos de extensión, incluso para Microsoft, ya que las interfaces no pueden tener ninguna implementación de métodos.

0

Creo que es probablemente un "problema de marketing". La forma de aconsejar al consumidor BCL (us) que use los métodos de Extensión, donde los necesitemos.

Desde la perspectiva de la facilidad de uso, no es sin ninguna bondad, la OMI, de integrarlos en BCL

Cuestiones relacionadas