2010-09-02 11 views

Respuesta

19

Sí, podría lograr un efecto similar a los eventos que pueda con métodos parciales. Los métodos parciales son realmente solo una manera de dejar que los generadores de código, principalmente los diseñadores, generen ganchos para el código no generado. Los eventos podrían llenar este rol.

Sin embargo, hay ventajas a métodos parciales más eventos en particular,

  • llamadas parciales método se eliminan completamente de la IL generado si no hay aplicación. Esto no puede hacerse con eventos.
  • El diseño de métodos parciales es para resolver el problema donde hay 1 proveedor del gancho y 1 consumidor. Los eventos están destinados a modelar 1 proveedor con N consumidores y tienen la sobrecarga que viene con tal diseño
  • No hay problema de ordenar (quién va primero). Con los eventos, debe asegurarse de que el código que se suscribe al evento se ejecute antes de que el código generado por el diseñador genere el evento. Esto no siempre es posible si el diseñador genera un constructor. Los métodos parciales no tienen ese problema.
2

No son "necesarios", pero se desean para aplicaciones a gran escala. El uso extensivo de eventos conduce al antipatrón de la IU inteligente donde la lógica empresarial está estrechamente unida a la interfaz del usuario, mientras que las funciones parciales le permiten separar mejor sus preocupaciones.

Aquí hay un enlace a la guía de programación MSDN C# sobre métodos parciales también. http://msdn.microsoft.com/en-us/library/wa80x488.aspx

2

El compilador eliminará las llamadas a métodos parciales si no hay implementaciones. Con la alternativa de eventos, los oyentes tendrían que revisarse en tiempo de ejecución (también necesitarían ser almacenados, etc.). Esto permite que los métodos parciales sean más efectivos, especialmente cuando hay muchos "eventos" potenciales y solo unos pocos tienen "oyentes" registrados.

0

Los métodos parciales se definen en tiempo de compilación, eventos en tiempo de ejecución. Entonces son cosas diferentes.

métodos parciales fueron llevados a la imagen para extender las clases ya existentes que no tiene ningún control sobre (parte del marco o auto-generado)

espero que esto ayude

Cuestiones relacionadas