每当我尝试设置可选参数,以在资源文件的东西的默认值,我得到一个编译时错误
为“信息”默认参数值必须是一个编译时间常数。
有什么办法,我可以改变资源文件的工作方式,使这个可能吗?
public void ValidationError(string fieldName,
string message = ValidationMessages.ContactNotFound)
在此, ValidationMessages
是一个资源文件。
不,你将不能够直接使资源工作在默认的。 你需要做的是设置默认值,以类似空,然后做资源查找时的参数在该方法的主体的默认值是什么。
一种选择是设置为默认值null
,然后填充该适当:
public void ValidationError(string fieldName, string message = null)
{
string realMessage = message ?? ValidationMessages.ContactNotFound;
...
}
当然,这只是工作,如果你不希望允许null
作为一个真正的价值。
另一个潜在选择是具有创造一个完整的文件生成前阶段const
基础上,资源串; 那么你可以参考这些consts。 这将是非常尴尬的,虽然。
另一种选择是你的方法一分为二,并有一个过载拨打对方,就像这样:
public void ValidationError(string fieldName)
{
ValidationError(fieldName, ValidationMessages.ContactNotFound);
}
public void ValidationError(string fieldName, string message)
{
...
}
通过这种方式,您还可以通过null
作为一个值message
的情况下,这也是该参数的有效值。