Je suis en train de créer une déléguée d'une méthode statique qui prend un argument de référence. S'il vous plaît, ne demandez pas pourquoi je fais une telle chose loufoque. Cela fait partie de l'apprentissage de comment fonctionnent .Net, C# et la réflexion et comment l'optimiser.
Mon code est :
public struct DataRow
{
private double t;
static public void Cram_T(ref DataRow dr, double a_t)
{
dr.t = a_t;
}
}
''''
Type myType = typeof(DataRow);
MethodInfo my_Cram_T_Method = myType.GetMethod("Cram_T");
var myCram_T_Delegate =
Delegate.CreateDelegate(typeof(Action),
my_Cram_T_Method)
as Action;
Cela me donne une erreur de liaison car (je pense) l'action générique ne correspond pas à la méthode.
En inspectant la valeur de Cram_T_Method dans la fenêtre de surveillance donne
{Void Cram_T(DataRow ByRef, Double)}
J'ai ensuite essayé d'utiliser le mot-clé ref dans l'Action :
var myCram_T_Delegate =
Delegate.CreateDelegate(typeof(Action),
my_Cram_T_Method)
as Action;
Mais cela ne compile pas. Le compilateur C# bloque au jeton "ref".
Quelle est la bonne façon de créer cette déléguée?