---
# System prepended metadata

title: Razorコンポーネントのパラメータは自動プロパティにする必要があるらしい 2024-01-19
tags: [Razor, コンポーネント, 自動プロパティ, Blazor]

---

---
lang: ja-jp
breaks: true
---
# Razorコンポーネントのパラメータは自動プロパティにする必要があるらしい 2024-01-19

> How to handle Warning:BL0007 on a Component with a DxCheckBox only
> https://supportcenter.devexpress.com/ticket/details/t1137771/how-to-handle-warning-bl0007-on-a-component-with-a-dxcheckbox-only

> Consider an analyzer to warn if a [Parameter] property isn't a simple auto property #26230
> https://github.com/dotnet/aspnetcore/issues/26230


## 以下のコンポーネントでは警告が発生する

```csharp=
<a href="@Href" target="_blank" rel="noopener noreferrer">@Href</a>
<br />
@code
{
    public TagA() => Href = "";

    private string? m_hrefValue;
    [Parameter]
    public string? Href
    {
        get => m_hrefValue;
        set
        {
            if (m_hrefValue != value)
            {
                m_hrefValue = value;
                StateHasChanged();
            }
        }
    }
}
```

```log=
warning BL0007: Component parameter 'XXXXXXXX.Pages.TagA.Href' should be auto property
```

## 以下のように修正すると警告は出ない

```csharp=
<a href="@Href" target="_blank" rel="noopener noreferrer">@Href</a>
<br />
@code
{
    public TagA() => Href = "";

    /// <summary>
    /// パラメータは自動プロパティにする必要があるらしい。
    /// </summary>
    [Parameter]
    public string Href { get; set; }

    protected override void OnInitialized()
    {
        HrefValue = Href;
    }

    private string? m_hrefValue;

    /// <summary>
    /// `[Parameter]`を削除。
    /// </summary>
    public string? HrefValue
    {
        get => m_hrefValue;
        set
        {
            if (m_hrefValue != value)
            {
                m_hrefValue = value;
                StateHasChanged();
            }
        }
    }
}
```

## 予期しない余分なレンダリングと上書きパラメータの変更を引き起こす副作用の報告があがっているとのこと

###### tags: `Blazor` `Razor` `コンポーネント` `自動プロパティ`
