ReSharper C# Intellisense 在键入 Override 关键字后显示可覆盖的成员
ReSharper C# Intellisense Show Overridable Members After Typing Override Keyword
我最近从 Visual Studio 2017 / ReSharper 2017.1 升级到 Visual Studio 2017 / ReSharper 2018.3,当时 IT 部门最近不得不重新映像我的工作机器并安装了所有软件的更新版本我用。我注意到一个我经常使用的功能的奇怪行为。
public class Foo { }
public class Bar { }
public class Parent
{
protected virtual void DoThing1() { }
protected virtual void DoThing2() { }
protected virtual void DoThing3(Func<Foo, Bar> callback)
{
}
}
public class Child : Parent
{
public Child()
{
DoThing3( /* ReSharper Intellisense here ... */ );
}
override /* ReSharper Intellisense here... */
}
在 classes 中使用可覆盖的成员时,例如在上面说明的 Child
class 中,我通常键入 override
并且 Intellisense 菜单会显示一个有针对性的建议列表,优先考虑列表顶部类型的可覆盖成员。
此处 ReSharper 建议可覆盖成员的目标列表。
然而,在升级到 ReSharper 2018.3 之后,Intellisense 菜单现在会向我显示一个包含它能想到的所有内容的通用列表,从关键字列表开始。
这里 ReSharper 提供了一切建议。看到旁边的滚动条了吗?
我找到了几种解决此问题的方法,但它们都破坏了我也经常使用的其他功能。
尝试 1
如果我转到 ReSharper > Options > Environment > IntelliSense > General
和 select Visual Studio
选项,这个问题就解决了。但是,这打破了 Intellisense 建议 Lambda 表达式签名的方式。
此处 ReSharper 为 Lamda 表达式 (ReSharper Intellisense) 建议了一些选项。
此处 ReSharper 不提供 Lambda 表达式选项(Visual Studio Intellisense)。
尝试 2
如果我启用 ReSharper Intellisense(通过尝试 1 中描述的过程),而是转到 ReSharper > Options > Environment > IntellSense > Completion Filters
和 select Persist filters state
选项和 select Exclude
对于 C#
子选项卡下的 Keywords
,这也修复了覆盖关键字问题以及 Lambda 表达式问题,但引入了另一个问题......我现在没有关键字智能感知大声笑。
在这里,Intellisense 菜单不建议关键字,因为它们已被禁用。
问题
有人知道在 Visual Studio 2017 / ReSharper 2018.3 中启用可覆盖成员建议、Lambda 表达式建议和关键字建议的方法吗?
在 JetBrains 的问题跟踪器上为此提交了一张工单:
https://youtrack.jetbrains.com/issue/RSRP-469670
也许如果他们看到有恼火的用户,那么修复就会更快。
对我有用的是先写覆盖,然后删除最后一两个字母,然后 ReSharper 开始建议可覆盖的方法。
我最近从 Visual Studio 2017 / ReSharper 2017.1 升级到 Visual Studio 2017 / ReSharper 2018.3,当时 IT 部门最近不得不重新映像我的工作机器并安装了所有软件的更新版本我用。我注意到一个我经常使用的功能的奇怪行为。
public class Foo { }
public class Bar { }
public class Parent
{
protected virtual void DoThing1() { }
protected virtual void DoThing2() { }
protected virtual void DoThing3(Func<Foo, Bar> callback)
{
}
}
public class Child : Parent
{
public Child()
{
DoThing3( /* ReSharper Intellisense here ... */ );
}
override /* ReSharper Intellisense here... */
}
在 classes 中使用可覆盖的成员时,例如在上面说明的 Child
class 中,我通常键入 override
并且 Intellisense 菜单会显示一个有针对性的建议列表,优先考虑列表顶部类型的可覆盖成员。
此处 ReSharper 建议可覆盖成员的目标列表。
然而,在升级到 ReSharper 2018.3 之后,Intellisense 菜单现在会向我显示一个包含它能想到的所有内容的通用列表,从关键字列表开始。
这里 ReSharper 提供了一切建议。看到旁边的滚动条了吗?
我找到了几种解决此问题的方法,但它们都破坏了我也经常使用的其他功能。
尝试 1
如果我转到 ReSharper > Options > Environment > IntelliSense > General
和 select Visual Studio
选项,这个问题就解决了。但是,这打破了 Intellisense 建议 Lambda 表达式签名的方式。
此处 ReSharper 为 Lamda 表达式 (ReSharper Intellisense) 建议了一些选项。
此处 ReSharper 不提供 Lambda 表达式选项(Visual Studio Intellisense)。
尝试 2
如果我启用 ReSharper Intellisense(通过尝试 1 中描述的过程),而是转到 ReSharper > Options > Environment > IntellSense > Completion Filters
和 select Persist filters state
选项和 select Exclude
对于 C#
子选项卡下的 Keywords
,这也修复了覆盖关键字问题以及 Lambda 表达式问题,但引入了另一个问题......我现在没有关键字智能感知大声笑。
在这里,Intellisense 菜单不建议关键字,因为它们已被禁用。
问题
有人知道在 Visual Studio 2017 / ReSharper 2018.3 中启用可覆盖成员建议、Lambda 表达式建议和关键字建议的方法吗?
在 JetBrains 的问题跟踪器上为此提交了一张工单:
https://youtrack.jetbrains.com/issue/RSRP-469670
也许如果他们看到有恼火的用户,那么修复就会更快。
对我有用的是先写覆盖,然后删除最后一两个字母,然后 ReSharper 开始建议可覆盖的方法。