Я пытаюсь создать делегат статического метода, который принимает аргумент ref. Пожалуйста, не спрашивайте, почему я делаю такую игрушку. Все это часть изучения того, как работают .NET, С# и размышления, и как оптимизировать его.
Мой код:
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 в Action:
var myCram_T_Delegate =
Delegate.CreateDelegate(typeof(Action<ref DataRow, Double>),
my_Cram_T_Method)
as Action<ref DataRow, Double>;
Но это не скомпилируется. Компилятор С# дросселирует в токене "ref".
Каков правильный способ создания этого делегата?