如何禁用 Resharper 覆盖元组名称?
How to disable Resharper's overriding of Tuple names?
如果我在 C# 6.0、visual studio 2017 中创建一个 System.ValueTuple,并将名称应用于变量,如下所示:
(int fooA, int fooB) bar = new ValueTuple<int, int>();
当我输入以下内容时:
bar.fooA = ....
Resharper 总是自动更正它
bar.Item1 = ....
即使 Intellisense 向我显示命名值并且我可以 select 它们,如果我手动将其重写回 bar.FooA 它仍然可以正常工作。所以 resharper 只是不知道如何处理这个。
Resharper 也确实在与这些元组作斗争,并提出了许多会破坏自身的格式,而且完全是错误的。例如:
建议 #1:'int' 让我的代码变成这样:
var bar = new ValueTuple<int, int>();
bar.fooA = 1;
这当然意味着第二行现在很破烂。
建议 #2:'new' 这样做:
(int fooA, int fooB) bar = new ValueTuple<int, int> {Item1 = 1};
这完全违背了命名我的元组值的目的。
有人知道 Resharper 的 C# 选项的哪一部分会阻止它吗?主要是第一个对我来说是个大烦恼。
更新:看起来这已在 R# 2017 或更高版本中修复。
如果我在 C# 6.0、visual studio 2017 中创建一个 System.ValueTuple,并将名称应用于变量,如下所示:
(int fooA, int fooB) bar = new ValueTuple<int, int>();
当我输入以下内容时:
bar.fooA = ....
Resharper 总是自动更正它
bar.Item1 = ....
即使 Intellisense 向我显示命名值并且我可以 select 它们,如果我手动将其重写回 bar.FooA 它仍然可以正常工作。所以 resharper 只是不知道如何处理这个。
Resharper 也确实在与这些元组作斗争,并提出了许多会破坏自身的格式,而且完全是错误的。例如:
建议 #1:'int' 让我的代码变成这样:
var bar = new ValueTuple<int, int>();
bar.fooA = 1;
这当然意味着第二行现在很破烂。
建议 #2:'new' 这样做:
(int fooA, int fooB) bar = new ValueTuple<int, int> {Item1 = 1};
这完全违背了命名我的元组值的目的。
有人知道 Resharper 的 C# 选项的哪一部分会阻止它吗?主要是第一个对我来说是个大烦恼。
更新:看起来这已在 R# 2017 或更高版本中修复。