Blazor でコンポーネントを開発する際、特定のパラメーターを必須にしたい場面があります。この記事では、EditorRequired
属性を使ってパラメーターを必須にする方法について解説します。
EditorRequired 属性とは
EditorRequired
属性は、Blazor コンポーネントのパラメーターを必須として指定するための属性です。この属性を付けることで、コンポーネント使用時にパラメーターが指定されていない場合にコンパイル警告が表示されます。
基本的な使い方
以下のように[Parameter]
と[EditorRequired]
の両方の属性を指定します:
@using Microsoft.AspNetCore.Components
<div class="user-card">
<h3>@Name</h3>
<p>Email: @Email</p>
</div>
@code {
[Parameter]
[EditorRequired]
public string Name { get; set; } = string.Empty;
[Parameter]
[EditorRequired]
public string Email { get; set; } = string.Empty;
[Parameter]
public string? PhoneNumber { get; set; }
}
上記の例では、Name
とEmail
が必須パラメーターとして定義されています。
コンポーネントの使用例
<!-- 正しい使用例(警告なし) -->
<UserCard Name="田中太郎" Email="tanaka@example.com" />
<!-- 警告が表示される例 -->
<UserCard Email="tanaka@example.com" /> <!-- Nameが未指定 -->
<UserCard Name="田中太郎" /> <!-- Emailが未指定 -->
警告をエラーに変換する設定
より厳密にしたい場合は、プロジェクトファイル(.csproj
)で警告をエラーとして扱う設定を追加できます:
<PropertyGroup>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<!-- または特定の警告のみをエラー化 -->
<WarningsAsErrors>BL0007</WarningsAsErrors>
</PropertyGroup>
Required 属性との違い
EditorRequired
と似た名前のRequired
属性がありますが、用途が異なります:
項目 | [EditorRequired] |
[Required] |
---|---|---|
主な用途 | コンポーネント呼び出し時の必須パラメータ指定 | モデルの入力バリデーション |
チェックタイミング | ビルド時(設計時) | 実行時 |
対象 |
[Parameter] プロパティ |
モデルのプロパティ |
無指定時の挙動 | コンパイル警告(設定でエラー化可) | バリデーションエラー(UI でエラーメッセージ表示など) |
null 許容の扱い | 警告は出るが実行時エラーなし | 実行時に必須エラーになる |
主な目的 | 呼び出し忘れ防止(開発者向け) | 入力忘れ防止(ユーザー向け) |
まとめ
EditorRequired
属性を使用することで、Blazor コンポーネントのパラメーターを必須にできます。これにより以下のメリットがあります:
- コンポーネント使用時の設定漏れを防止
- 開発時に早期にエラーを発見
- コンポーネントの仕様を明確化
ただし、完全にビルドエラーにするには追加設定が必要な点にご注意ください。プロジェクトの要件に応じて適切に設定を行い、保守性の高い Blazor アプリケーションを開発しましょう。
参考