【发布时间】:2023-04-05 12:32:01
【问题描述】:
我需要在运行时创建一个带有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 参数构建委托?
【问题讨论】:
标签: dynamic parameters delegates pass-by-reference