参数化函数中的Lambda表达式会杀死Intellisense

时间:2013-11-12 13:25:55

标签: c# visual-studio-2012 lambda intellisense

环境:     Microsoft Visual Studio Premium 2012     版本11.0.60610.01更新3     Microsoft .NET Framework     版本4.5.50709

(这个问题以前是关于Expression的,但是我在更简单的场景中将问题分离出来,显示了同样的问题,所以为了简单起见,我重写了这个问题。)

我发现如果方法在委托之后包含任何参数,则Intellisense不适用于使用泛型方法类型的lambdas。这个复杂的句子更容易写成Intellisense停止工作的条件列表。

  • Method具有泛型类型参数,例如Working<T>(...)
  • 方法的参数之一是使用方法泛型类型的委托,例如Action<T>
  • 该方法包含在委托之后列出的参数,例如NotWorking<T>(Action<T> action, String x)。委托之后的参数类型不相关。

(临时)解决方法:

如果您事先写完所有参数,Intellisense将适用于该项目。

因此,如果您编写NotWorking<Person>(p=>p然后输入一个句点来打开IntelliSense,请编写两个逗号,就好像您想要“跳过”参数一样。你应该得到这样的东西:NotWorking<Person>(p=>p,,)

当考虑所有参数时,返回p=>p并输入句点。现在IS会工作。

由于类型在编译时是已知的(显式给出),我猜这是一个VS / IS错误,所以我filed it with MS Connect

0 个答案:

没有答案