У меня есть куча методов, которые выглядят как эти два:возможно реорганизовать это в единый метод
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]);
}
}
}
У меня есть один метод для каждого свойства моего объекта pFBlock. с таким небольшим изменением между методами, я чувствую, что должен быть лучший способ сделать это, но я не могу думать ни о чем. Я использую VS 2005.
Метод представляется публичным. Почему бы просто не вызвать его? Какой смысл использовать отражение? – tvanfosson
этот код сгенерирован автоматически, и я не знаю, существует ли этот метод или он принимает параметры во время генерации кода. Поэтому я использую рефлексию, чтобы убедиться, что она существует и не требует никаких параметров перед вызовом. – scott
может использовать 4.0 функции? если да, проверьте мой ответ на использование динамического ключевого слова. Он отлично работает с генерацией кода и обеспечивает лучшую производительность, чем чистое отражение. – Jaster