如何根据参数调用构造函数内部的基础构造函数? 例如:
public SomeConstructor (){
if(SomeParameter == "something") //here call base("something");
else //here call base("something else")
}
以我为例
SomeParameter
例如可以是本地计算机名称。
为了解释我在做什么,我想根据计算机名称确定构造函数。我正在处理 MVC 项目,当我在服务器上发布项目时,我仍然忘记更改连接字符串的名称。所以,我想指定如果计算机名称 == 我的计算机名称,然后调用
:base("DefaultConnection")
否则,调用例如
:base("ServerConnectionString")
最佳答案
你不能那样做,你只能像后面的例子那样调用,即使那样,你的两个例子都传递了一个字符串而不改变参数类型,所以这样看起来毫无意义(他们不是甚至你正在调用的不同构造函数)。您可以以传统方式调用构造函数,并确保提供的值在此之前是有效的。
作为一个即兴的例子,请考虑以下内容:
public SomeConstructor()
: base(Configuration.ConnectionString) {
}
public static Configuration {
public static string ConnectionString {
get {
/* some logic to determine the appropriate value */
#if DEBUG
return ConfigurationManager.ConnectionStrings["DebugConnectionString"];
#else
return ConfigurationManager.ConnectionStrings["ReleaseConnectionString"];
#endif
}
}
}
关于c# - 如何根据某些参数在构造函数中调用基构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15071824/