有没有办法禁用Visual Studio自动完成对象关键字?

8

简短版- 有没有办法关闭Visual Studio Intellisense中的object关键字。

详细版- 我正在使用Visual Studio 2008,基本上在使用匿名类型。我开始输入类似以下内容:

Assert.AreEqual("/SomePath/Stuff", GetOutboundUrl(

我输入new {

然后我看到Visual Studio已经识别出方法GetOutboundUrl需要一个对象,并将代码更改为new object{。大多数情况下这很好,但有两个原因:

1)我很少使用对象类型的代码。

2)我实际上正在尝试创建匿名类型而不是对象,所以这个特性实际上是一个阻碍。

从书籍《Pro ASP.NET MVC framework》中可以看到,GetOutboundUrl的签名如下:

private string GetOutboundUrl(object routeValues)

我在想是否有一种方法可以关闭此功能,但仅针对“object”关键字-我想看看我是否真的会错过对象自动完成(就我个人而言,我认为不会)。
我意识到我可以通过取消选中“将关键字放置在完成列表中”来关闭所有关键字的此功能,但我只想关闭对象的此功能。

请注意,相关(重复?)问题:https://dev59.com/zXRB5IYBdhLWcg3wHkLi。该问题的被接受答案与上述建议相同:在“工具”|“选项”|“文本编辑器”|“C#”|“智能感知”中将“{”从字符列表中删除。顺便说一下,“从Intellisense对话框中删除{”解决方案适用于我在带有SP1的VS2008上。John,这个解决方案对你有效吗?根据OrbMan上面的评论,这个修复可能不适用于所有人。OrbMan,一个 - Justin Grant
4个回答

2

我创建了一个ReSharper Live模板:

Shortcut: new

Contents: 
new { $END$ }

现在我可以输入 n-e-w-TAB,然后就会出现 "new { }" 并且我的光标会在花括号之间。虽然不是最理想的,但这样已经更好了。

1
我有一个类似的JavaScript匿名函数创建方式,func-TAB create function(){$END$}。 - Chris Brandsma

2

如果没有实际的Visual Studio设置更改(我怀疑是否存在),您可以输入“new”,然后按ESC,接着是“{”符号。虽然不是理想的解决方法,但它可以避免每次删除单词“object”。

您可以通过编辑选项来解决这个特定的情况:“文本编辑器” -> “C#” -> “智能感知” => “通过键入以下字符提交:”。删除“{”符号即可。


按下Escape键是我目前解决这个问题的方法 - 虽然感谢你的建议 - 这可能对阅读此内容的其他人有用。 - RichardOD
我实际上尝试了像上面建议的那样删除“{”,重新启动了Visual Studio,但是当我键入“{”时它仍然添加了“object”。 - D'Arcy Rittich
OrbMan,当我运行测试时,我删除了“{”和“}”两个符号。这对你有用吗?(对我来说有效。) - John Fisher

1

将 IntelliSense 选项默认关闭

在“工具”菜单上,点击“选项”。

选择“文本编辑器”文件夹。

选择您想要自定义 IntelliSense 的语言文件夹。

在“常规”属性页中,清除您不需要的 IntelliSense 功能的复选框:

Auto list members applies to List Members

 Parameter information applies to Parameter Info

1
当智能感知让人烦恼时,我通常会注释掉几行空行,在这些行上作为注释编写代码,然后在完成后取消注释。这样,您可以自由地编写任何内容,而智能感知不会干扰。其他时候,当您需要智能感知时,它也没有被禁用。希望这能帮助到某个人!

4
人们为了绕过微软的“功能”而不得不做出悲伤的事情。 - Keith Pinson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接