Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
| Propiedad | Value |
|---|---|
| Identificador de la regla | CA2017 |
| Título | El recuento de parámetros no coincide |
| Categoría | Confiabilidad |
| La corrección es problemática o no problemática | Poco problemático |
| Habilitado de forma predeterminada en .NET 10 | Como advertencia |
Causa
El número de parámetros proporcionados en la plantilla de mensaje de registro no coincide con el número de marcadores de posición con nombre.
Descripción de la regla
Esta regla marca las llamadas del registrador que tienen un número incorrecto de argumentos de mensaje.
Cómo corregir infracciones
Coincide con el número de marcadores de posición en el formato de plantilla con el número de argumentos pasados.
Cuándo suprimir las advertencias
No suprima las advertencias de esta regla.
Example
En el ejemplo siguiente se muestran métodos que infringen CA2017 y métodos que cumplen la regla.
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