如何让ReSharper停止创建只读字段?
这个question是相似的,但我的问题似乎被问了一个未答复的评论。如何让ReSharper停止创建只读字段?
我创建了一个C#类。我使用alt - insert添加构造函数。我想补充的一个参数的构造函数,然后我用ALT - 进入创建并从参数初始化一个领域,像这样:
的问题是,我的领域被作为创建一个readonly
字段,并且在很多情况下我不想创建只读字段。
readonly int my_int;
如何让ReSharper不添加使我的字段只读?我试图在ReSharper选项中做一个非常彻底的搜索,但显然我错过了一些东西!
我也找不到任何选项来更改创建默认值; 然而,如果你让R·为它喜欢(即readonly
)创建这个领域,后来又输入:
public void Bar(int baz)
{
my_int = baz;
}
然后分配给my_int
会得到一个红色波浪下划线,因为它是非法的,并提供快速修复(替代 + 输入)在该位置将为Make field 'my_int' non-readonly
。
所以本着'代码优先'的精神,你可能想让R#做它的事情,并用它来改变它,当你真正需要它改变(当然这可能是从来没有...)
该字段的创建是硬编码的只读创建。这个想法是,你正在创建一个字段,所以它没有任何用法来默认为最严格的,如果你尝试在其他地方写入,你可以在该点上输入+并删除只读状态。如果该字段已存在,ReSharper将尝试初始化参数中的现有字段。
如果你想,你可以编写一个插件来生成非只读字段。你应该看看dotPeek中的IntroduceFieldFix
类。它有几个构造函数,它将快速修复绑定到警告信息,它将引入一个使用当前语言默认模式的字段(它被硬编码为“private readonly $0 $1;
”)
您可以创建一个类,从InitializeFieldFix
,并包括一个构造函数,它需要UnusedParameterWarningBase
作为参数。然后,您可以按照与IntroduceFieldFix
相同的实现方式进行操作,但为字段创建提供了不同的模式,首先检查当前语言。
另一种选择可能是使用'导入字段'重构。调用它的最好方法是使用'Refactor This'(Ctrl + Shift + R)对参数声明并从减少的重构选项中选择'导入字段'。默认情况下,它将生成可写字段,但也可以选择更改修饰符。
这工作完全像我想要的。 – 2014-10-07 14:16:00
为什么你不想只读字段? – DixonD 2010-08-25 14:47:16
因为最终这个字段不是只读的。在某些情况下,当然,我想只读。但是在这一点上,我刚刚介绍了该领域,并且宁愿不将其创建为只读。 – 2010-08-25 14:49:50
我同意,我讨厌在resharper!这种自动读取只会在大多数时间污染我的代码。 – andrecarlucci 2011-06-23 22:19:21