Bagikan melalui


CA2017: Jumlah parameter tidak cocok

Properti Nilai
ID Aturan CA2017
Judul Jumlah parameter tidak cocok
Golongan Keandalan
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif
Diaktifkan secara default di .NET 10 Sebagai peringatan

Penyebab

Jumlah parameter yang disediakan dalam templat pesan pengelogan tidak cocok dengan jumlah tempat penampung bernama.

Deskripsi aturan

Aturan ini menandai panggilan pencatat yang memiliki jumlah argumen pesan yang salah.

Cara memperbaiki pelanggaran

Cocokkan jumlah tempat penampung dalam format templat dengan jumlah argumen yang diteruskan.

Kapan harus menekan peringatan

Jangan menyembunyikan peringatan dari aturan ini.

Example

Contoh berikut menunjukkan metode yang melanggar CA2017 dan metode yang memenuhi aturan.

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

Lihat juga