Délégué pour l'Action< ref T1, T2>

Je suis en train de créer un délégué d'une méthode statique qui prend un argument ref. S'il vous plaît ne me demandez pas pourquoi je suis en train de faire une telle cockamamie chose. Tout cela fait partie de l'apprentissage de la manière .Net, C#, et de réflexion, de travail 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<DataRow, Double>),      
                                 my_Cram_T_Method) 
                                 as Action<DataRow, Double>;

Cela me donne une liaison erreur de parce que (je pense) pour le générique de l'action ne correspond pas à la méthode.

L'inspection de la valeur de Cram_T_Method dans la fenêtre watch 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<ref DataRow, Double>),         
                                 my_Cram_T_Method) 
                                 as Action<ref DataRow, Double>;

Mais ce ne sera pas compilé. Le compilateur C# étouffe au le jeton "ref".

Quelle est la bonne façon de créer ce délégué?

InformationsquelleAutor Max Yaffe | 2010-01-08