Whenever I attempt to set the default value of an optional parameter to something in a resource file, I get a compile-time error of
Default parameter value for 'message' must be a compile-time constant.
Is there any way that I can change how the resource files work to make this possible?
public void ValidationError(string fieldName,
string message = ValidationMessages.ContactNotFound)
In this, ValidationMessages
is a resource file.
One option is to make the default value null
and then populate that appropriately:
public void ValidationError(string fieldName, string message = null)
{
string realMessage = message ?? ValidationMessages.ContactNotFound;
...
}
Of course, this only works if you don't want to allow null
as a genuine value.
Another potential option would be to have a pre-build step which created a file full of const
strings based on the resources; you could then reference those consts. It would be fairly awkward though.