这个问题很相似,但我的问题似乎是在未回答的评论中提出的。
我创建了一个 C# 类。我使用alt-insert添加构造函数。我向构造函数添加一个参数,然后使用alt-enter从该参数创建和初始化一个字段,如下所示:
问题是我的字段被创建为一个readonly
字段,在很多情况下我不想创建一个只读字段。
readonly int my_int;
如何告诉 ReSharper 不要添加使我的字段只读?我试图在 ReSharper 选项中进行非常彻底的搜索,但显然我遗漏了一些东西!
这个问题很相似,但我的问题似乎是在未回答的评论中提出的。
我创建了一个 C# 类。我使用alt-insert添加构造函数。我向构造函数添加一个参数,然后使用alt-enter从该参数创建和初始化一个字段,如下所示:
问题是我的字段被创建为一个readonly
字段,在很多情况下我不想创建一个只读字段。
readonly int my_int;
如何告诉 ReSharper 不要添加使我的字段只读?我试图在 ReSharper 选项中进行非常彻底的搜索,但显然我遗漏了一些东西!
我也找不到任何更改创建默认值的选项;但是,如果您允许 R# 随意创建此字段(即readonly
),然后键入以下内容:
public void Bar(int baz)
{
my_int = baz;
}
那么分配 tomy_int
将得到一个红色波浪下划线,因为它是非法的,并且在该位置提供的快速修复(Alt+ Enter)将是Make field 'my_int' non-readonly
.
因此,本着“代码优先”的精神,您可能只想让 R# 做它的事情,并在您实际需要更改时使用它来更改它(当然这可能永远不会...... )
字段创建被硬编码为在创建时只读。这个想法是您正在创建一个字段,因此它没有任何默认使用最严格的用法,如果您尝试在其他地方写入它,您可以在此时 alt+enter 并删除只读状态。如果该字段已存在,ReSharper 将尝试从参数初始化现有字段。
如果您愿意,您可以编写一个插件来将该字段生成为非只读的。您应该查看IntroduceFieldFix
dotPeek 中的类。它有几个构造函数,将快速修复绑定到警告波浪线,它将使用当前语言的默认模式引入一个字段(硬编码为“ private readonly $0 $1;
”)
您可以创建一个也派生自 的类InitializeFieldFix
,并包含一个UnusedParameterWarningBase
作为参数的构造函数。然后,您可以遵循与 相同的实现IntroduceFieldFix
,但为字段创建提供不同的模式,首先检查当前语言。
另一种选择可能是改用“引入字段”重构。调用它的最佳方法是在参数声明中使用“Refactor This”(Ctrl++ Shift)R,并从减少的重构选项中选择“Introduce Field”。默认情况下,它将生成可写字段,但也可以选择更改修饰符。