Blazor アプリケーションを大規模に構築する際、各ページごとにルーティングを定義していると管理が煩雑になることがあります。そのため、ルーティングを別ファイルにまとめて管理する方法を調査しました。
公式ドキュメントの記述
公式ドキュメントでは、以下のように@attribute
を使用してルートを定義する方法が紹介されています。
@attribute [Route(Constants.CounterRoute)]
これを参考に、ルーティングを別ファイルで定義するコードを試してみました。
実装例
以下のように、ルートを定義するための定数を別ファイルに作成しました。
public static class Const
{
public static string Test = "/test-temp";
}
しかし、このコードを使用すると以下のエラーが発生しました。
CS0182: 属性引数は、定数式、typeof式、または属性パラメータ型の配列の作成式でなければなりません。
エラーの原因と解決法
エラーの原因は、Test
フィールドがconst
ではなくstatic
で定義されていたことです。@attribute
で使用する値は、コンパイル時に決定される必要があります。そのため、以下のようにconst
修飾子を使用して定義を修正しました。
public static class Const
{
- public static string Test = "/test-temp";
+ public const string Test = "/test-temp";
}
この修正により、エラーが解消され、ルーティングを別ファイルで定義して使用することが可能になりました。
注意点
readonly
修飾子を使用してもエラーが発生するため、const
を使用してコンパイル時に値が決定されるようにする必要があります。
まとめ
Blazor でルーティングを別ファイルに定義する際には、const
を使用して定数を定義することが重要です。これにより、ルーティングの管理が容易になり、大規模なアプリケーションでも効率的に開発を進めることができます。
参考