Я бегу следующую программу на двух разных машинах:Анонимный метод в статическом классе нестационарен? Как его вызывать?
static class Program
{
static void Main(string[] args)
{
Func<int> lambda =() => 5;
Console.WriteLine(lambda.GetMethodInfo().IsStatic);
Console.ReadLine();
}
}
На одной машине, с .NET 4.5 и Visual Studio 2012 установлена эта печать «истинный», на другой, с .NET Framework 4.6.2 и Visual Studio 2015 он печатает «false».
Я думал, что анонимные методы были статическими, если они определены в статическом контексте. Это изменилось (документированным образом) во время некоторых последних обновлений фреймов?
Что мне нужно сделать, это использовать Expression.Call
по адресу lambda.GetMethodInfo()
, а в нестатическом случае для этого требуется экземпляр, на котором определена лямбда. Если бы я хотел использовать lambda.GetMethodInfo().Invoke
, я столкнулся бы с той же проблемой.
Как я могу получить такой экземпляр?
Но какова ваша цель? Каков ожидаемый результат? –