我在布尔方法中添加了一个空属性检查,以防止在 SelectedCustomer 属性中的任何字符串字段为空时返回 true。
问题是在我将任何数据输入到 SelectedCustomer 模型之前,我的 bool 方法是从构造函数中调用的。这会导致 Null 引用异常。
从我在语句中设置的断点可以看出,“{“对象引用未设置为对象的实例。”}”是错误。在我从数据网格中选择客户之前,不会初始化 selectedCustomer 属性。
我的问题是,我怎样才能以这种方式执行空检查而不会导致 NRE?
这是我执行空检查的 CanModifyCustomer 布尔方法:
private bool CanModifyCustomer(object obj)
{
if (SelectedCustomer.FirstName != null && SelectedCustomer.LastName != null && SelectedCustomer != null)
{
return true;
}
return false;
}
它在我的按钮命令中作为参数传递:
public MainViewModel(ICustomerDataService customerDataService)
{
this._customerDataService = customerDataService;
QueryDataFromPersistence();
UpdateCommand = new CustomCommand((c) => UpdateCustomerAsync(c).FireAndLogErrors(), CanModifyCustomer);
}
这是执行空检查的 SelectedCustomer 属性:
private CustomerModel selectedCustomer;
public CustomerModel SelectedCustomer
{
get
{
return selectedCustomer;
}
set
{
selectedCustomer = value;
RaisePropertyChanged("SelectedCustomer");
}
}