Мне нужно создать тип делегата с параметром ref
во время выполнения.
Если бы я знал тип (ы) параметров во время компиляции, я мог бы использовать явное объявление типа делегата, например:
// S is some struct / value type, e.g. int or Guid
delegate void VoidDelSRef (ref S s);
Type td = typeof (VoidDelSRef);
Этот тип td
используется для создания дерева выражений C # 4, которое компилируется в делегат.
Поскольку код в моем дереве выражений изменяет параметр s
, мне нужно передать s
по ссылке.
Я должен поддерживать любой тип S
, поэтому я не могу использовать явное объявление типа делегата, потому что у меня есть только Type ts = typeof (S)
и его ref
тип Type tsr = ts.MakeByRefType ()
.
Я пытался использовать Expression.GetActionType (tsr)
, но он не допускает ref
типов.
Как мне создать делегата с ref
параметрами во время выполнения?