J'ai le scénario suivant:
class Addition{
public Addition(int a){ a=5; }
public static int add(int a,int b) {return a+b; }
}
J'appelle ajouter dans une autre classe par:
string s="add";
typeof(Addition).GetMethod(s).Invoke(null, new object[] {10,12}) //this returns 22
J'ai besoin d'un moyen similaire à l'instruction de réflexion ci-dessus pour créer un nouvel objet de type Addition utilisant Addition(int a)
J'ai donc la chaîne s= "Addition"
, Je veux créer un nouvel objet en utilisant la réflexion.
Est-ce possible?
Je ne pense pas que GetMethod
le fera, non - mais GetConstructor
le fera.
using System;
using System.Reflection;
class Addition
{
public Addition(int a)
{
Console.WriteLine("Constructor called, a={0}", a);
}
}
class Test
{
static void Main()
{
Type type = typeof(Addition);
ConstructorInfo ctor = type.GetConstructor(new[] { typeof(int) });
object instance = ctor.Invoke(new object[] { 10 });
}
}
EDIT: Oui, Activator.CreateInstance
fonctionnera aussi. Utilisez GetConstructor
si vous voulez avoir plus de contrôle sur les choses, trouvez les noms de paramètres, etc. Activator.CreateInstance
est bien si vous vous voulez appeler le constructeur.
Oui, vous pouvez utiliser Activator.CreateInstance