Domanda

Quando si utilizza di Josh Smith RelayCommand , la maggior parte degli esempi uso ho visto l'inizializzazione pigra come ad esempio:

public class ViewModel
{
    private ICommand myCommand;

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

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

}

Invece di creare il RelayCommand nel costruttore, in questo modo:

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

    public ICommand MyCommand
    {
        get;
        private set;

    }

    // ... stuff ...
}

Qual è il vantaggio di utilizzare l'inizializzazione differita qui? Dovrà chiamare la struttura get quando si imposta l'associazione, quindi non posso vedere un motivo per utilizzare questo metodo sulle impostazioni di cose nel costruttore.

mi manca qualcosa qui?

È stato utile?

Soluzione

In realtà, WPF e Silverlight avranno il comando di relè solo una volta per ogni associazione, in modo che non si ha realmente bisogno di memorizzare un campo supporto a tutti:

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

Così, mentre non c'è niente di sbagliato con la creazione nel .ctor come lei suggerisce, c'è ben poco motivo per farlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top