如何根据某些参数调用构造函数内的基础构造函数?

Adr*_*zyk 6 c# asp.net-mvc constructor entity-framework

如何根据参数调用构造函数内的基础构造函数?例如:

public SomeConstructor (){
       if(SomeParameter == "something") //here call base("something");
          else //here call base("something else")
}
Run Code Online (Sandbox Code Playgroud)

在我的例子中

SomeParameter
Run Code Online (Sandbox Code Playgroud)

可以是例如本地计算机名称.

为了解释我在做什么,我想根据计算机名确定构造函数.我正在研究MVC项目,当我在服务器上发布项目时,我仍然忘记更改连接字符串的名称.所以,我想指定计算机名称==我的计算机名称,然后调用

:base("DefaultConnection")
Run Code Online (Sandbox Code Playgroud)

否则,请致电

:base("ServerConnectionString")
Run Code Online (Sandbox Code Playgroud)

Gra*_*mas 8

你不能这样做,你只能在后面的例子中调用,即使这样,你的例子都传递一个字符串而不改变参数类型,所以这种方式似乎毫无意义(它们甚至不是不同的构造函数)你在打电话).您可以通过传统方式调用构造函数,并确保提供的值在此之前是有效值.

作为一个袖口示例,请考虑以下事项:

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
    } 
  }
}
Run Code Online (Sandbox Code Playgroud)