前提・実現したいこと
BlazorのRazorコンポーネントを利用した継承とメソッドのオーバーライド
該当のソースコード
クラスが次の関係にあるとき、
LayoutComponentBase
└PageComponentBase(独自クラス、LayoutComponentBaseを継承)
└XXXPage(独自クラス、PageComponentBaseを継承)
PageComponentBaseがレイアウトに次の実装を持つ
c#
1<div>@Header</div> 2<div>@Body</div> 3@code{ 4 public MarkupString Header {get;set;} 5 protected override Task OnInitializedAsync() 6 { 7 Header = GetHeader(); 8 return base.OnInitializedAsync(); 9 } 10 11 protected virtual MarkupString GetHeader() => (MarkupString)""; 12}
XXXPageがレイアウトに次に実装を持つ
c#
1Page "/XXXPage" 2 3<div>aaa</div> 4@code{ 5 protected override MarkupString GetHeader() => $"{this.GetType().Name}"; 6}
/XXXPageへアクセスしたとき、
期待する結果(ブラウザの表示)は
XXXPage
aaa
ですが
実際は
aaa
です。
XXXPageでoverrideしたメソッドによるHeaderの書き換えが反映されていない理由は何でしょうか?
補足情報(FW/ツールのバージョンなど)
VisualStudio2019 .NET 5 Blazor
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。