Estoy intentando crear un delegado de un método estático que toma un argumento de ref. Por favor, no preguntes por qué estoy haciendo una cosa tan cacarea. Todo es parte de aprender cómo funciona .Net, C# y la reflexión y cómo optimizarla.Delegado para una acción < ref T1, T2>
Mi código es:
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>;
Esto me da un error porque la unión (creo) la acción genérica no coincide con el método.
Inspeccionar el valor de Cram_T_Method en la ventana de inspección da
{Void Cram_T(DataRow ByRef, Double)}
entonces he intentado usar la palabra clave ref en la Acción:
var myCram_T_Delegate =
Delegate.CreateDelegate(typeof(Action<ref DataRow, Double>),
my_Cram_T_Method)
as Action<ref DataRow, Double>;
Pero esto no se compilará. El compilador C# se ahoga en el token "ref".
¿Cuál es la forma correcta de crear este delegado?
que trae limitaciones al método interno s. – Bitterblue