SelectedCustomer プロパティで文字列フィールドが空の場合に true を返さないように、ブール値メソッドに null プロパティ チェックを追加しました。
問題は、SelectedCustomer モデルにデータを入力する前に、bool メソッドがコンストラクターから呼び出されることです。これにより、Null 参照例外が発生します。
ステートメントに設定したブレークポイントから、「{"オブジェクト参照がオブジェクトのインスタンスに設定されていません。"}」がエラーであることがわかります。selectedCustomer プロパティは、データ グリッドから顧客を選択するまで初期化されません。
私の質問は、NRE を発生させずにこの方法で null チェックを実行するにはどうすればよいですか?
これは、null チェックを実行する 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);
}
これは、null チェックが実行される SelectedCustomer プロパティです。
private CustomerModel selectedCustomer;
public CustomerModel SelectedCustomer
{
get
{
return selectedCustomer;
}
set
{
selectedCustomer = value;
RaisePropertyChanged("SelectedCustomer");
}
}