2017-08-17 18 views
6

VS2017(おそらくoldersバージョン)は、private readonlyフィールドを生成し、それを割り当てるこの簡単なコンストラクタのショートカットです。コンストラクタのVisual Studioのプライベートフィールド生成のショートカットをカスタマイズするにはどうすればよいですか?

スクリーンショット:

enter image description here

これはプライベートメンバを生成終わるがuserServiceと呼ばれ、その後でそれを割り当てます。

this.userService = userService; 

これが名前にある私が使用したコードのスタイルに反します接頭辞が_のすべてのプライベートメンバーは、次のようになります。

_userService = userService; 

VSがコード生成のショートカットでこのコードスタイルのルールに従うようにするにはどうすればよいですか?

+0

これは、この機能はコード解析サービスによって提供され、スニペットとは何の関係もありません。 Roslynが追加されてから利用可能です。先頭のアンダースコアは.NET Frameworkプログラミングガイドラインに違反していますが、Microsoftプログラマにこれを変更するように話すつもりはありません。 Resharperによってプッシュされたスタイルですが、プログラマが購入しないようにするため、これを使うことを考えているので、彼らは 'これを好きではありません。 –

+4

@ HansPassant私がMicrosoftのチームによって制作されたすべての*現代的なコードは、このプライベートメンバーのためのこの「_camelCase」コンベンションに従います。 [CoreFX C#コーディングスタイルガイドライン](https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/coding-style.md#c-coding-style)、[ASP.NET Coreコーディングスタイル](https://github.com/aspnet/Home/wiki/Engineering-guidelines#coding-style-guidelines--general)、さらには[Rosylnコード自体](https://github.com/dotnet/roslyn /blob/012c7fe9f105ccb20443414249a2ece5407c2818/src/Compilers/CSharp/Portable/CSharpParseOptions.cs#L22)... ?? – kspearrin

+0

@HansPassant良いニュース...誰かがこれを変更できるようにMicrosoftプログラマにうまく話しました。以下の答えを見てください。 – kspearrin

答えて

7

これは、独自のRoslynコードアナライザー命名規則を作成することで実現できます。ソリューションに.editorconfigを追加して、カスタム命名規則を指定します。

ここではそれらについての詳細を読む:https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference

が質問から所望の効果を得るには、次のように動作します:あなたが唯一のスタイル(dotnet_naming_style.underscore_prefix.required_prefix = _)を使用する必要があるの

[*.{cs,vb}] 
dotnet_naming_rule.private_members_with_underscore.symbols = private_members 
dotnet_naming_rule.private_members_with_underscore.style = underscore_prefix 
dotnet_naming_rule.private_members_with_underscore.severity = suggestion 

dotnet_naming_symbols.private_members.applicable_kinds   = field 
dotnet_naming_symbols.private_members.applicable_accessibilities = private 
dotnet_naming_symbols.private_members.required_modifiers   = readonly 

dotnet_naming_style.underscore_prefix.capitalization = camel_case 
dotnet_naming_style.underscore_prefix.required_prefix = _ 
dotnet_naming_style.underscore_prefix.required_suffix = 
dotnet_naming_style.underscore_prefix.word_separator = 

注意、現在Roslynには、すべてのスタイルを指定しないとVSがクラッシュするバグがあります。

結果:

enter image description here

関連する問題