【发布时间】:2017-02-22 11:40:30
【问题描述】:
我在两台不同的机器上运行以下程序:
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 的机器上打印“true”,在另一台安装了 .NET Framework 4.6.2 和 Visual Studio 2015 的机器上打印“false”。
我认为如果匿名方法是在静态上下文中定义的,那么它们就是静态的。在最近的一些框架更新期间,这种变化(以记录的方式)吗?
我需要做的是在lambda.GetMethodInfo() 上使用Expression.Call,在非静态情况下,这需要一个定义了lambda 的实例。
如果我想使用lambda.GetMethodInfo().Invoke,我也会遇到同样的问题。
我怎样才能得到这样的实例?
【问题讨论】:
-
但是你的目标是什么?预期的结果是什么?
标签: c# .net reflection lambda