> ## Documentation Index
> Fetch the complete documentation index at: https://ancplua.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# AL0051 - Use defined-enum guard helper

> Use Guard.DefinedEnum() instead of verbose if (!Enum.IsDefined) throw patterns

Source: [Al0051UseGuardDefinedEnumAnalyzer.cs](https://github.com/ANcpLua/ANcpLua.Analyzers/blob/main/src/ANcpLua.Analyzers/Analyzers/Al0051UseGuardDefinedEnumAnalyzer.cs)

## Description

Use `Guard.DefinedEnum()` instead of verbose enum-validation and throw patterns.

## Bad Code

```csharp theme={null}
public void SetStatus(Status status)
{
    if (!Enum.IsDefined(typeof(Status), status))
        throw new ArgumentOutOfRangeException(nameof(status));
}
```

## Good Code

```csharp theme={null}
public void SetStatus(Status status)
{
    Guard.DefinedEnum(status);
}
```

## Properties

* **Category**: Roslyn Utilities
* **Severity**: Warning
* **Enabled by default**: True
* **Code fix available**: True

## Configuration

```editorconfig theme={null}
dotnet_diagnostic.AL0051.severity = warning
```
