Chamando uma função em tempo de execução permite muita flexibilidade quando consumir web service via javascript por exemplo.
Onde no javascript você manda uma variável com o nome da função e o web service retorna o valor.
Como por exemplo verificar nome de usuário, se o e-mail já existe..
A função CallByName é nativa do VB 6.0. Então explicarei abaixo como podemos fazer isso com C#.
Lembrando que o exemplo serve apenas para mostrar o funcionamento, a idéia em si, mas pode ser implementado em algo muito mais robusto e que haja a necessidade da utilização disso, pois nesse exemplo não teria sentido a utilização.
default.aspx.cs
using System.Reflection;
protected void Page_Load(object sender, EventArgs e)
{
//Nome do metodo
string sMethodName = "Nome";
//Nome da classe, no meu caso Functions
Type t = typeof(Functions);
MethodInfo m = t.GetMethod(sMethodName);
FieldInfo field = t.GetField(sMethodName, BindingFlags.Static
| BindingFlags.Public);
object obj = field.GetValue(null);
Response.Write(obj + "<br >");
//chamando agora o segundo
sMethodName = "Cidade";
m = t.GetMethod(sMethodName);
field = t.GetField(sMethodName, BindingFlags.Static
| BindingFlags.Public);
obj = field.GetValue(null);
Response.Write(obj);
}
Functions.cs
public class Functions
{
public static string Nome = "Cassiano";
public static string Cidade = "Lajeado";
}