设置一个C#可选参数的默认值设置一个C#可选参数的默认值(Setting the default v

2019-05-12 01:07发布

每当我尝试设置可选参数,以在资源文件的东西的默认值,我得到一个编译时错误

为“信息”默认参数值必须是一个编译时间常数。

有什么办法,我可以改变资源文件的工作方式,使这个可能吗?

public void ValidationError(string fieldName, 
                            string message = ValidationMessages.ContactNotFound)

在此, ValidationMessages是一个资源文件。

Answer 1:

不,你将不能够直接使资源工作在默认的。 你需要做的是设置默认值,以类似空,然后做资源查找时的参数在该方法的主体的默认值是什么。



Answer 2:

一种选择是设置为默认值null ,然后填充该适当:

public void ValidationError(string fieldName, string message = null)
{
    string realMessage = message ?? ValidationMessages.ContactNotFound;
    ...
}

当然,这只是工作,如果你不希望允许null作为一个真正的价值。

另一个潜在选择是具有创造一个完整的文件生成前阶段const基础上,资源串; 那么你可以参考这些consts。 这将是非常尴尬的,虽然。



Answer 3:

另一种选择是你的方法一分为二,并有一个过载拨打对方,就像这样:

public void ValidationError(string fieldName)
{ 
    ValidationError(fieldName, ValidationMessages.ContactNotFound);
}

public void ValidationError(string fieldName, string message)
{
    ...
}

通过这种方式,您还可以通过null作为一个值message的情况下,这也是该参数的有效值。



文章来源: Setting the default value of a C# Optional Parameter