J'essaie de créer un délégué d'une méthode statique qui prend un argument ref. S'il te plait, ne demande pas pourquoi je fais une telle chose de cockamamie. Tout cela fait partie de l'apprentissage du fonctionnement de .Net, C# et de la réflexion et comment l'optimiser.Déléguer pour une action < ref T1, T2>
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<DataRow, Double>),
my_Cram_T_Method)
as Action<DataRow, Double>;
Cela me donne une erreur de liaison parce que (je pense) l'action générique ne correspond pas à la méthode.
la valeur de Contrôle Cram_T_Method dans la fenêtre de la montre donne
{Void Cram_T(DataRow ByRef, Double)}
Je puis essayé d'utiliser le mot-clé ref dans l'action:
var myCram_T_Delegate =
Delegate.CreateDelegate(typeof(Action<ref DataRow, Double>),
my_Cram_T_Method)
as Action<ref DataRow, Double>;
Mais cela ne compilera pas. Le compilateur C# étouffe au jeton "ref".
Quelle est la bonne façon de créer ce délégué?
qui apporte des limites à la méthode intérieure s. – Bitterblue