Pregunta

Cuando se utiliza de Josh Smith RelayCommand , la mayoría de los ejemplos he visto el uso de inicialización perezosa como por ejemplo:

public class ViewModel
{
    private ICommand myCommand;

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

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

}

En lugar de crear el RelayCommand en el constructor, como este:

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

    public ICommand MyCommand
    {
        get;
        private set;

    }

    // ... stuff ...
}

¿Cuál es la ventaja de utilizar la inicialización perezosa aquí? Se tendrá que llamar a la obtención de propiedad cuando la creación de la unión, así que no puedo ver una razón para usar este método sobre la configuración de las cosas en el constructor.

Me estoy perdiendo algo aquí?

¿Fue útil?

Solución

En realidad, WPF y Silverlight obtendrán el mando del relé sólo una vez por la unión, por lo que no es realmente necesario para almacenar un campo respaldo en absoluto:

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

Así que, aunque no hay nada malo con la creación en el .ctor como usted sugiere, hay muy poca razón para hacerlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top