tengo un montón de métodos que se parecen a estos dos:es posible refactorizar esto en un solo método
public void SourceInfo_Get()
{
MethodInfo mi = pFBlock.SourceInfo.GetType().GetMethod("SendGet");
if (mi != null)
{
ParameterInfo[] piArr = mi.GetParameters();
if (piArr.Length == 0)
{
mi.Invoke(pFBlock.SourceInfo, new object[0]);
}
}
}
public void SourceAvailable_Get()
{
MethodInfo mi = pFBlock.SourceAvailable.GetType().GetMethod("SendGet");
if (mi != null)
{
ParameterInfo[] piArr = mi.GetParameters();
if (piArr.Length == 0)
{
mi.Invoke(pFBlock.SourceAvailable, new object[0]);
}
}
}
tengo un método para cada propiedad en mi objeto pFBlock. con tan poco cambio entre los métodos, creo que debería haber una mejor manera de hacerlo, pero no puedo pensar en ninguno. Estoy usando VS 2005.
El método parece ser público. ¿Por qué no invocarlo? ¿De qué sirve usar la reflexión? – tvanfosson
este código se genera automáticamente y no sé si el método existe o si toma parámetros en el tiempo de generación del código. Así que estoy usando la reflexión para asegurarme de que existe y no requiere ningún parámetro antes de llamar. – scott
¿puedes usar las características 4.0? si es así, verifique mi respuesta para el uso de la palabra clave dinámica. Funciona bien con la generación de código y proporciona un rendimiento mucho mejor que la reflexión pura. – Jaster