首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RyuJIT的表达式错误

使用RyuJIT的表达式错误
EN

Stack Overflow用户
提问于 2015-09-08 17:17:22
回答 1查看 241关注 0票数 0

我有以下节目:

代码语言:javascript
复制
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编译时,我会得到以下异常:

代码语言:javascript
复制
Unhandled Exception: System.ArgumentException: Static method requires null instance, non-static method requires non-null instance.

这是RyuJIT的一个bug吗?周围有工作吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-08 19:07:27

看起来这是https://github.com/dotnet/roslyn/issues/5075设计的

若要修复上述代码,请将Expression.Call替换为Expression.Invoke。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32463635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档