¿Usando un patrón dinámico quizás? Puede llamar a cualquier método / propiedad utilizando la palabra clave dinámica, ¿verdad? ¿Cómo verificar si el método existe antes de llamar a myDynamicObject.DoStuff (), por ejemplo?
c#
.net
methods
reflection
properties
Louis Rhys
fuente
fuente
DynamicObject
?Respuestas:
Podrías escribir algo así:
Editar: incluso puedes hacer un método de extensión y usarlo así
fuente
a través de la reflexión
Similar es para métodos
fuente
GetType()
hay un método comoGetProperties()
. Está devolviendo la matriz dePropertyInfo
. Pero, ¿cómo puedo usar elGetProperties()
método?Es una vieja pregunta, pero me la encontré.
Type.GetMethod(string name)
lanzará una AmbiguousMatchException si hay más de un método con ese nombre, por lo que es mejor que manejemos ese casofuente
¿No sería mejor no usar ningún tipo dinámico para esto y dejar que su clase implemente una interfaz? Luego, puede verificar en tiempo de ejecución si un objeto implementa esa interfaz y, por lo tanto, tiene el método (o propiedad) esperado.
Creo que esta es la única forma correcta.
A lo que te refieres es a escribir pato, lo cual es útil en escenarios en los que ya sabes que el objeto tiene el método, pero el compilador no puede verificarlo. Esto es útil en escenarios de interoperabilidad COM, por ejemplo. (mira este artículo)
Si desea combinar la escritura de pato con la reflexión, por ejemplo, creo que se está perdiendo el objetivo de la escritura de pato.
fuente