CA2017: Aantal parameters komt niet overeen

Eigenschap Waarde
Regel-id CA2017
Titel Aantal parameters komt niet overeen
Categorie Betrouwbaarheid
Fix kan brekend of niet-brekend zijn Niet-brekend
Standaard ingeschakeld in .NET 10 Als waarschuwing
Toepasselijke talen C# en Visual Basic

Oorzaak

Het aantal parameters dat is opgegeven in het logboeksjabloon komt niet overeen met het aantal benoemde plaatsaanduidingen.

Beschrijving van regel

Deze regel markeert logboekaanroepen met een onjuist aantal berichtargumenten.

Hoe schendingen op te lossen

Stem het aantal tijdelijke aanduidingen in het sjabloonformaat af op het aantal doorgegeven argumenten.

Wanneer waarschuwingen onderdrukken

Een waarschuwing van deze regel niet onderdrukken.

Example

In het volgende voorbeeld ziet u methoden die CA2017 schenden en methoden die voldoen aan de regel.

public class LoggingExample
{
    private readonly ILogger<LoggingExample> _logger;

    public LoggingExample(ILogger<LoggingExample> logger)
    {
        _logger = logger;
    }

    public void ExampleMethod()
    {
        string name = "Alice";
        int age = 30;

        // Violates CA2017: Too few arguments for placeholders.
        _logger.LogInformation("User {Name} is {Age} years old and lives in {City}", name, age);

        // Violates CA2017: Too many arguments for placeholders.
        _logger.LogError("Error occurred: {Message}", "Something went wrong", "Extra argument");

        // Correct usage: Matching number of placeholders and arguments.
        _logger.LogInformation("User {Name} is {Age} years old", name, age);
    }
}
Imports Microsoft.Extensions.Logging

Public Class LoggingExample

    Private ReadOnly _logger As ILogger(Of LoggingExample)

    Public Sub New(logger As ILogger(Of LoggingExample))
        _logger = logger
    End Sub

    Public Sub ExampleMethod()
        Dim name As String = "Alice"
        Dim age As Integer = 30

        ' Violates CA2017: Too few arguments for placeholders.
        _logger.LogInformation("User {Name} is {Age} years old and lives in {City}", name, age)

        ' Violates CA2017: Too many arguments for placeholders.
        _logger.LogError("Error occurred: {Message}", "Something went wrong", "Extra argument")

        ' Correct usage: Matching number of placeholders and arguments.
        _logger.LogInformation("User {Name} is {Age} years old", name, age)
    End Sub

End Class

Zie ook