## Why is this an issue?

Inconsistent naming conventions can lead to confusion and errors when working in a team. This rule ensures that all generic type parameter names follow a consistent naming convention by checking them against a provided regular expression.

The default configuration follows Microsoft’s recommended convention:

- Generic type parameter names must start with an upper case 'T', e.g. T
- The rest of the name should use Pascal casing, starting with an upper case character, e.g. TKey
- Short abbreviations of 2 letters can be capitalized, e.g. TFooID
- Longer abbreviations should be lowercased, e.g. TFooHtml

## How to fix it

To fix this issue, ensure that all generic type parameter names in your code follow the naming convention specified in the regular expression.

### Code examples

#### Noncompliant code example

With the default parameter value `^T(([A-Z]{1,3}[a-z0-9]+)*([A-Z]{2})?)?$`:

    Public Class Foo(Of tkey) ' Noncompliant
    End Class

#### Compliant solution

    Public Class Foo(Of TKey) ' Compliant
    End Class

## Resources

### Documentation

- Microsoft Learn - Generic Type Parameters (C# reference)