Pregunta

Tengo que llamar a un método en un objeto, pero no sé el nombre del método hasta que el tiempo de ejecución.

¿Cuáles son las técnicas disponibles?

(por ejemplo. GetMethod (). Invoke (), los delegados, c # 4.0 dinámico)

Gracias!

¿Fue útil?

Solución

La funcionalidad dynamic C # 4.0 va a ser la forma más sencilla de hacerlo. En un sentido muy real, dynamic es "sólo un envoltorio" en torno a la reflexión. Es un muy bien envoltorio, sin embargo, que es probablemente su mejor opción.

Otras formas, en aproximadamente el creciente nivel de dificultad:

  • El uso de un Reflexión de terceros biblioteca. No está seguro de lo que hay en estos días.
  • Escribir su propio Reflexión código.
  • Utilice el CodeDOM a crear código que llama al método desea llamar.
  • Emit IL que hace más o menos lo mismo que la CodeDOM código generado.
  • Crear C # código fuente que se compila en un conjunto que se puede llamar, que a su vez llama a la deseada método.

Los tres últimos no son para los débiles de corazón. Su mejor opción es utilizar dynamic o escribir su propio código de Reflexión. Si hubiera tenido dynamic tres años atrás, cuando estaba escribiendo código para algo similar, yo he utilizado.

Otros consejos

Se puede utilizar la reflexión para las funciones de llamada que no conoce el nombre de hasta el tiempo de ejecución. He aquí algunos doc:

http://msdn.microsoft.com/ en-us / library / f7ykdhsy% 28VS.80% 29.aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top