我有以下节目:
class MyClass
{
public static Dictionary<string, Func<string, string, string>> FuncMap;
static MyClass()
{
FuncMap = new Dictionary<string, Func<string, string, string>>();
FuncMap.Add("testing", (x,y) => x + " " + y);
}
public string Foo()
{
MethodInfo func = FuncMap["testing"].Method;
var t = Expression.Lambda<Func<string>>(Expression.Call(func, new Expression[]
{
Expression.Constant("testing"),
Expression.Constant("testing 2")
})).Compile();
return t();
}
}
class Program
{
static void Main(string[] args)
{
var inst = new MyClass();
Console.WriteLine(inst.Foo());
}
}当我在Visual 2013中编译它时,它没有问题,但是在Visual 2015中使用RyuJIT编译时,我会得到以下异常:
Unhandled Exception: System.ArgumentException: Static method requires null instance, non-static method requires non-null instance.这是RyuJIT的一个bug吗?周围有工作吗?
发布于 2015-09-08 19:07:27
看起来这是https://github.com/dotnet/roslyn/issues/5075设计的
若要修复上述代码,请将Expression.Call替换为Expression.Invoke。
https://stackoverflow.com/questions/32463635
复制相似问题