30 votes

Resharper convertit la propriété automatique en propriété complète

J'ai trouvé le contraire ici Mais je dois fréquemment passer de la propriété automatique à la propriété complète. Serait-il possible d'automatiser cela (avec un raccourci peut-être) ?

De Auto-Property

public string FirstName { get; set; }

Vers la propriété avec le champ arrière

    private string _firstName;

    public string FirstName
    {
        get
        {
            return _firstName;
        }
        set
        {
            _firstName = value;
        }
    }

Évidemment, je modifierais ensuite la propriété complète plus loin ...

39voto

Dan Morphis Points 952

Placez votre curseur sur le nom de la propriété, puis attendez une seconde ou deux. Appuyez sur la séquence de touches de raccourci de Resharper (Alt-Enter) et la deuxième option devrait être "To property with backing field", ce qui est ce que vous voulez.

Vous pouvez également cliquer sur l'icône "marteau" dans la marge de gauche pour obtenir cette option.

1voto

user3520366 Points 11

Pour que cela fonctionne (ALT-Enter), vous devez configurer le schéma du clavier de resharper. VS -> Outils -> Options -> ReSharper -> Général -> Options -> Clavier et menus -> Schéma du clavier de Resharper -> Visual Studio

1voto

Martin Points 2963

J'aimerais ajouter une solution étendue qui permette également de créer une propriété dans ce style, qui prenne en charge les éléments suivants INotifyPropertyChanged pour les modèles de vue :

public string Name
{
    get => _name;
    set
    {
        if (value == _name) return;
        _name = value;
        RaisePropertyChanged();
    }
}

/// <summary>
/// Raises the <see cref="PropertyChanged"/> event for the given <paramref name="propertyName"/>.
///
/// The <see cref="NotifyPropertyChangedInvocatorAttribute"/> attribute is used
/// because of Resharper support for "to property with change notification":
/// https://www.jetbrains.com/help/resharper/Coding_Assistance__INotifyPropertyChanged_Support.html
/// </summary>
/// <param name="propertyName"></param>
[NotifyPropertyChangedInvocator]
public virtual void RaisePropertyChanged([CallerMemberName] string propertyName = null)
{
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

Les étapes requises sont les suivantes :

  • Installer le paquet Nuget "JetBrains.Annotations" dans le projet où se trouvent vos vos modèles de vue sont situés
  • Utilisez le [NotifyPropertyChangedInvocator] sur la méthode où le PropertyChanged l'événement est déclenché
  • Après cela, l'option "Vers la propriété avec notification de changement" est disponible pour les propriétés de vos modèles de vue.

enter image description here

Voir aussi : Support de Jetbrains INotifyPropertyChanged

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