2017-08-17 16 views
6

VS 2017 (i może wersje dla starszych wersji) daje mi ten mały skrót konstruktora do generowania pola private readonly i przypisywania go.Jak dostosować skrót generowania pola prywatnego Visual Studio dla konstruktorów?

Zrzut ekranu:

enter image description here

To kończy generowanie prywatny członek nazywa userService a następnie przypisuje go:

this.userService = userService; 

to sprzeczne stylu kodu, który używam, która ma imię wszyscy członkowie prywatni z prefiksem _, co powoduje przypisanie, które powinno wyglądać następująco:

_userService = userService; 

Jak mogę to zrobić, aby system VS był posłuszny tej zasadzie stylu kodu dzięki skrótom do generowania kodu?

+0

To nie ma nic wspólnego z fragmentów, funkcja ta jest zapewniana przez służby analizy kodu. Dostępne od Roslyn został dodany. Wiodący podkreślnik jest naruszeniem Wytycznych programowania systemu .NET, nie ma mowy o tym, aby zmienić program Microsoft. Jest to styl pchany przez Resharper, nie lubią tego ", ponieważ to sprawia, że ​​programista go nie kupuje, rozważ go. –

+4

@HansPassant Każdy kawałek * nowoczesnego * kodu, który widziałem, wyprodukowany przez zespoły w Microsoft, postępuję zgodnie z konwencją '_camelCase' dla prywatnych użytkowników. Zobacz [Wytyczne dotyczące stylu kodowania CoreFX C#] (https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/coding-style.md#c-coding-style), [ASP.NET Core Styl kodowania] (https://github.com/aspnet/Home/wiki/Engineering-guidelines#coding-style-guidelines--general), a nawet [sam kod Rosyln] (https://github.com/dotnet/roslyn /blob/012c7fe9f105ccb20443414249a2ece5407c2818/src/Compilers/CSharp/Portable/CSharpParseOptions.cs#L22) ... ?? – kspearrin

+0

@HansPassant Dobra wiadomość ... ktoś z powodzeniem przekonał programistę Microsoft, że może to zmienić. Zobacz odpowiedź poniżej. – kspearrin

Odpowiedz

7

Można to osiągnąć, tworząc własną regułę nazewnictwa Roslyn Code Analyzer. Dodaj .editorconfig do rozwiązania, aby określić niestandardowe konwencje nazewnictwa.

Czytaj więcej o nich tutaj: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference

Aby uzyskać pożądany efekt z pytaniem, co następuje zadziała:

[*.{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 = 

pamiętać, że należy wystarczy użyć jednego stylu (dotnet_naming_style.underscore_prefix.required_prefix = _), ale w Roslyn jest błąd, który powoduje awarię VS, jeśli nie określisz wszystkich stylów.

Wynik:

enter image description here

Powiązane problemy