I have the following program:
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());
}
}
When I compile this in Visual Studio 2013 it works with no issue but when compiled in Visual Studio 2015 with RyuJIT I get the following exception:
Unhandled Exception: System.ArgumentException: Static method requires null instance, non-static method requires non-null instance.
Is this a bug with RyuJIT? Are there any work arounds?