180 votes

Comment personnaliser le raccourci de génération de champ privé de Visual Studio pour les constructeurs?

VS 2017 (et peut-être d'anciens versions) me donne cette pratique petit constructeur de raccourci pour générer un private readonly du champ et de l'affecter.

Capture d'écran:

enter image description here

Ce qui finit par générer un membre privé appelés userService , puis lui attribue avec:

this.userService = userService;

Cela va à l'encontre du style de code que j'utilise qui est au nom de tous les membres avec un préfixe _ résultant de la cession qui devrait ressembler à ça:

_userService = userService;

Comment puis-je faire en sorte que VS obéit à ce code de style de la règle avec sa génération de code raccourcis?

366voto

Maciek Points 1016

Cela peut aussi être réalisée directement dans Visual Studio. Il suffit d'aller à Tools -> Options -> Text Editor -> C# -> Code Style -> Naming.

Tout d'abord, vous devez définir un nouveau nom de style en cliquant sur "Gérer les styles de nommage" bouton:

VS2017 Naming style dialog

Puis cliquez sur le signe + pour définir une nouvelle règle pour les "Privés ou de Champ Interne", qui utilise votre nom nouveau style:

VS2017 Options dialog

Après cela, lorsque vous appliquez le "Créer et initialiser le champ" refactoring, il sera nommé avec un trait de soulignement.

69voto

michael_hook Points 81

Les paramètres .editorconfig sont la réponse de kspearrin qui n'a pas fonctionné pour moi. Je devais les utiliser (pour VS2017 version 15.4.0):

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

dotnet_naming_symbols.private_fields.applicable_kinds           = field
dotnet_naming_symbols.private_fields.applicable_accessibilities = private

dotnet_naming_style.prefix_underscore.capitalization = camel_case
dotnet_naming_style.prefix_underscore.required_prefix = _
 

Je les ai obtenues ici: https://github.com/dotnet/roslyn/issues/22884#issuecomment-358776444

35voto

kspearrin Points 317

Ceci peut être réalisé par la création de votre propre Roslyn Code de l'Analyseur de la règle de nommage. Ajouter un .editorconfig dans votre solution afin d'indiquer les conventions de nommage.

Lisez plus ici: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference

Pour obtenir l'effet désiré à partir de la question, la suivante devrait fonctionner:

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

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

dotnet_naming_style.prefix_underscore.capitalization = camel_case
dotnet_naming_style.prefix_underscore.required_prefix = _

Résultat:

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X