por Bruno de Andrade

Chamar uma função a partir de uma string (CallByName em C#)

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";
}

 

Comentários

Carregando comentários

Postar um novo comentário



Processando...