Je générer des fichiers dll contiennent du code comme l'exemple suivant:appel fonction dynamique en utilisant la réflexion
using System;
using System.Collections;
using System.Xml;
using System.IO;
using System.Windows.Forms;
namespace CSharpScripter
{
public class TestClass : CSharpScripter.Command
{
private int i=1;
private int j=2;
public int k=3;
public TestClass6()
{
}
public void display (int i,int j,int k)
{
string a = null;
a= k.ToString();
string a1 = null;
a1= this.i.ToString();
string a2 = null;
a2= j.ToString();
MessageBox.Show(" working! "+ "k="+ a +" i="+a1 + " j="+ a2);
}
public void setValues(int i,int j,int k1)
{
this.i=i;
this.j=j;
k=k1;
}
Je compile le code précédent, alors j'exécute un objet à partir du fichier dll. Donc, dans la deuxième partie du code (partie Exécution), je n'appelle que la fonction d'exécution, Il contient un appel pour une fonction, j'ai appelé ici: affichage.
Pour cela, j'ai besoin de définir des valeurs dans la déclaration par une fonction setValue. Je veux qu'il soit appelé dynamiquement (setValeurs), qui a telle déclaration:
public void(Parameter[] parameters)
{
//some code block here
}
Pour cette situation je Reflection.
Type objectType = testClass.GetType();
MethodInfo members = objectType.GetMethod("setValues");
ParameterInfo[] parameters = members.GetParameters();
for(int t = 0; t < parameters.Length; t++)
{
if (parameters[t]. ParameterType == typeof())
{
object value = this.textBox2.Text;
parameters.SetValue(Convert.ChangeType(value,parameters[t].ParameterType), t);
}
}
Mais il renvoie une erreur de casting « l'objet ne peut pas être stocké dans un tableau de ce type. » à la dernière ligne, en premier paramètre pour la méthode (setValue). Quel est le problème ici?
Et comment puis-je appeler la méthode Dynamiquement après le code précédent, par (Invoquer) ou y at-il un meilleur moyen?
Merci.
Veuillez revoir votre formatage :). Mettez le code dans des blocs de code. – Simon
Ouais, j'ai essayé de le faire, mais ça n'a toujours pas de [email protected] ', quelle est cette fonction sans nom en prenant un tableau de paramètres en paramètre? – Timores