У меня была такая же мысль, как и у вас, Suiko6272, об этом.
Я закончил с твоим вторым решением в конце. Тем не менее, я использовал этот механизм в моей собственности довольно долго
private DelegateCommand _cmdLogin;
public DelegateCommand CmdLogin
{
get { return _cmdLogin??(_cmdLogin = new DelegateCommand(this.Login, this.CanLogIn));}
}
Приведенный выше код lazy загружает команду делегата и занимает всего 1 строку кода.
Я закончил с вашим вторым решением, потому что другие кодеры читают его проще / легче всего.