Définition de la valeur par défaut D'un paramètre C# Optional
chaque fois que j'essaie de définir la valeur par défaut d'un paramètre optionnel à quelque chose dans un fichier ressource, j'obtiens une erreur de compilation de
la valeur par défaut du paramètre 'message' doit être une constante de temps de compilation.
est-ce que je peux changer la façon dont les fichiers de ressources fonctionnent pour rendre cela possible?
public void ValidationError(string fieldName,
string message = ValidationMessages.ContactNotFound)
en ceci, ValidationMessages
est un fichier de ressources.
3 réponses
Non, vous ne pourrez pas faire fonctionner la ressource directement dans la valeur par défaut. Ce que vous devez faire est de définir la valeur par défaut à quelque chose comme null et ensuite faire la recherche de ressource lorsque le paramètre a la valeur par défaut dans le corps de la méthode.
une option est de faire la valeur par défaut null
et puis peupler que de manière appropriée:
public void ValidationError(string fieldName, string message = null)
{
string realMessage = message ?? ValidationMessages.ContactNotFound;
...
}
bien sûr, cela ne fonctionne que si vous ne voulez pas permettre null
comme valeur réelle.
une autre option possible serait d'avoir une étape de pré-construction qui créerait un fichier plein de chaînes const
basées sur les ressources; vous pourriez alors référencer ces consts. Il serait assez maladroit.
une autre option est de diviser votre méthode en deux, et que l'un appelle l'autre en surcharge, comme ceci:
public void ValidationError(string fieldName)
{
ValidationError(fieldName, ValidationMessages.ContactNotFound);
}
public void ValidationError(string fieldName, string message)
{
...
}
de Cette façon, vous permet également de passer null
comme valeur pour message
dans le cas qui est également une valeur valide pour ce paramètre.