Question

Lors de l'utilisation de Josh Smith RelayCommand , la plupart des exemples Je l'ai vu utiliser l'initialisation paresseuse comme:

public class ViewModel
{
    private ICommand myCommand;

    public ICommand MyCommand
    {
        get
        {
            if (myCommand == null)
            {
                myCommand = new RelayCommand(p => DoSomething() );
            }

            return myCommand;
        }
    }
    // ... stuff ...

}

Au lieu de créer le RelayCommand dans le constructeur, comme ceci:

public class ViewModel
{
    public ViewModel()
    {
            MyCommand = new RelayCommand(p => DoSomething());
    }

    public ICommand MyCommand
    {
        get;
        private set;

    }

    // ... stuff ...
}

Quel est l'avantage d'utiliser ici l'initialisation paresseuse? Il devra appeler la propriété get lors de la configuration de la liaison, je ne peux pas voir une raison d'utiliser cette méthode sur les paramètres les choses dans le constructeur.

Suis-je manque quelque chose ici?

Était-ce utile?

La solution

En fait, WPF et Silverlight obtenir la commande de relais juste une fois par la liaison, de sorte que vous n'avez pas vraiment besoin de stocker un champ de support du tout:

public ICommand MyCommand
{
    get
    {
        return new RelayCommand(p => DoSomething());
    }
}

Ainsi, alors il n'y a rien de mal à la création dans le .ctor comme vous le suggérez, il y a très peu de raisons de.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top