Khi sử dụng, hầu hết các ví dụ tôi đã nhìn thấy sử dụng khởi tạo lười biếng Josh Smith RelayCommand như:Tại sao RelayCommands thường sử dụng khởi tạo lười biếng?
public class ViewModel
{
private ICommand myCommand;
public ICommand MyCommand
{
get
{
if (myCommand == null)
{
myCommand = new RelayCommand(p => DoSomething());
}
return myCommand;
}
}
// ... stuff ...
}
Thay vì tạo ra RelayCommand trong các nhà xây dựng, như thế này:
public class ViewModel
{
public ViewModel()
{
MyCommand = new RelayCommand(p => DoSomething());
}
public ICommand MyCommand
{
get;
private set;
}
// ... stuff ...
}
gì là lợi ích của việc sử dụng khởi tạo lười biếng ở đây? Nó sẽ phải gọi thuộc tính get khi thiết lập các ràng buộc, vì vậy tôi không thể thấy một lý do để sử dụng phương thức này trên các thiết lập mọi thứ trong constructor.
Tôi có thiếu gì đó ở đây không?
Bạn nói đúng. Việc khởi tạo Lazy RoutedCommands không có ý nghĩa gì vì chúng rất nhẹ và chúng được nạp ngay khi View gắn với nó. – jbe