前回はNavigationService.NavigateAsync(“PageBView”);と記述することで,ViewModelからでもPgeBViewページに画面遷移できることを確認しました。ただ,”PageBView”というコーディングは,単純な文字列の為,少しバグの混入が気になります。要するに,PageBViewというクラスの名前を変更しても,文字列の為コンパイルエラーにならないので,変更漏れが発生しやすくなります。コンパイルが通ってしまうという事は,実行時にエラーになるため,不具合の混入に気付かずにリリースしてしまうという事です。その場合はクレーム等の問題になるため,何とか避けたいことです。今回はこのリテラル文字を取り除く方法を確認していきます。
リテラル文字を取り除く方法
リテラル文字を取り除くには「nameof」を使います。変更は次のように行います。
1 2 3 4 |
private void PageBShow() { NavigationService.NavigateAsync(nameof(PageBView)); } |
MainPageViewModel.cs の最初のusingに「using BlankApp1.Views;」を追加します。 これで,PageBviewという文字列を記述したのと同じ効果が得られますが,PageBviewのクラス名が変更されても追従してコンパイルエラーになるので,確実にバグの混入を防ぐことができます。
■Udemyの無料コース「C#を勉強する順番(49分)」は今すぐここからご覧いただけます
C#を正しい3層構造で造れてますか?
無料動画コース「C#のアーキテクチャー」(80分)をプレゼントしています
#01_Prismのインストール
#02_各デバイスでの起動確認
#03_Prismの構成
#04_ViewとViewModelに分ける理由
#05_ラベルの値をバインディング
#06_ボタンのデータバインディング
#07_ViewModelに対してテストコードを書く方法
#08_画面遷移
#09_リテラル文字の対応
#10_引数のある画面遷移
#11_パラメータのリテラル文字対応
#12_メッセージBoxを表示する方法
#13_デバイスごとに処理を切り替える方法
C#でコードスニペットを使う方法