Я пытаюсь создать делегат статического метода, который принимает аргумент ref. Пожалуйста, не спрашивайте, почему я делаю такую глупую вещь. Это все часть изучения того, как .Net, C # и рефлексия работают и как их оптимизировать.
Мой код:
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>;
Это дает мне ошибку привязки, потому что (я думаю) универсальное действие не соответствует методу.
Проверка значения Cram_T_Method в окне просмотра дает
{Void Cram_T(DataRow ByRef, Double)}
Затем я попытался использовать ключевое слово ref в действии:
var myCram_T_Delegate =
Delegate.CreateDelegate(typeof(Action<ref DataRow, Double>),
my_Cram_T_Method)
as Action<ref DataRow, Double>;
Но это не скомпилируется. Компилятор C # душит токен "ref".
Как правильно создать этого делегата?