###前提
WPFでMVVMに則ったプログラムをReactivePropertyを使用して作成しています。
###分からない事
Modelのプロパティを変更通知で受け取るメリットが分かりません。
Modelの値を受け取る方法は大きく2つあると思っています。
・変更通知で値の受け渡しをする
・インスタンスのプロパティにアクセスする
インスタンスのメソッドがvoidであるならば、プログラムの結合度合いとして前者も後者も全く同じであるように感じていますが、変更通知で受け取るメリットが何かあるのでしょうか?
もしくは、インスタンスのプロパティにアクセスすると、こういう時に困る!という場面があるのでしょうか。
以下に例を示します。
ごちゃごちゃ書いていますが、要はエクセルの作成が出来たかどうかという所を見て頂ければよいです。
ReactivePropertyを使用して変更通知できた値を使う場合
//エクセルを作成する為の元データをセット var languageDictionaryExcel = new LanguageDictionaryExcel( languageDictionary, excelPackage, App.Container.Resolve<Font>()); var crLanguageDictionary = languageDictionaryExcel .ObserveProperty(x => x.CheckResult) .ToReactiveProperty() .AddTo(Disposable); //エクセルの作成 languageDictionaryExcel.Create(); //エクセルの作成に失敗した場合エラーメッセージを出す if (crLanguageDictionary.Value.HasError) { await MahAppsDialogCoordinator.ShowMessageAsync( this, PageName.ListOrInputForWeb, crLanguageDictionary.Value.ErrorMessage); }
インスタンスのプロパティをそのまま使う場合
//エクセルを作成する為の元データをセット var languageDictionaryExcel = new LanguageDictionaryExcel( languageDictionary, excelPackage, App.Container.Resolve<Font>()); //エクセルの作成 languageDictionaryExcel.Create(); //エクセルの作成に失敗した場合エラーメッセージを出す if (languageDictionaryExcel.CheckResult.HasError) { await MahAppsDialogCoordinator.ShowMessageAsync( this, PageName.ListOrInputForWeb, languageDictionaryExcel.CheckResult.ErrorMessage); }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/19 14:20
2017/09/19 23:59