【发布时间】:2013-09-26 19:37:59
【问题描述】:
当调用创建编译表达式时,我试图在生成的编译委托上调用 CreateDelegate,但遇到 NotSupportedException,解释是:派生类必须提供实现。如何为已编译的方法创建委托?
public delegate int AddOne(int input);
void Main()
{
var input = Expression.Parameter(typeof(int));
var add = Expression.Add(input,Expression.Constant(1));
var lambda = Expression.Lambda(typeof(AddOne),add,input);
var compiled = (AddOne)lambda.Compile();
compiled.Method.CreateDelegate(typeof(AddOne));
}
【问题讨论】:
-
它仍然是真实的。我还需要获取已编译委托的 MethodInfo,将其保存在我的结构中,然后“重新转换”MethodInfo 以再次委托。此代码应该可以工作,但它不能工作,并且“派生类必须提供实现”错误的性质尚不清楚。
标签: c# .net reflection delegates linq-expressions