[英]Switch Statement in C# Class
我有一個帶有xml配置文件的csharp應用程序,其中包含一個名為“環境”的元素,可以將其設置為不同的值(例如,開發/測試/生產)。
修改此配置文件條目后,應用程序中生成的全局變量將全部更改。 我的應用程序中有一個名為Globals的類,用於存儲全局變量。 我想向其中添加一個case / switch元素,但是它似乎無法正常工作。
因此,例如,我在globals類的頂部定義了以下內容:
public static string environment = MyApp.Properties.Settings.Default.Environment;
然后在我的課堂上降低我要執行以下操作:
switch (environment)
{
case "development":
public static string Server = "SQL1";
public static string Username = "dev.user";
case "test":
public static string Server = "SQL2";
public static string Username = "test.user";
case "production":
public static string Server = "SQL3";
public static string Username = "prod.user";
default:
public static string Server = "SQL1";
public static string Username = "dev.user";
}
(在上面的示例中,我將變量的數量減少到兩個,只是為了使其更易於理解,但實際上每個環境中可能有30個變量。)
這不起作用,我得到多個錯誤:
類,結構或接口成員聲明中的無效令牌“ switch”
類,結構或接口成員聲明中的無效令牌“)”無效
還有其他方法嗎?
謝謝布拉德
public static class Globals
{
public static string Environment = MyApp.Properties.Settings.Default.Environment;
public static string Server;
// rest of code
public static void LoadEnvironment()
{
switch (Environment)
{
case "development":
{
Server = "SQL1";
Username = "dev.user";
break;
}
// rest of code
}
}
}
基於該錯誤,編譯器認為它是在類的主體內進行編碼的。 嘗試將邏輯移至某個方法或某些方法中,這可能是由於switch語句內的訪問修飾符所致-例如。 公共靜態等
因此,代碼應如下所示:
public class MyClass
{
public static string Server;
public static string Username;
static MyClass()
{
switch (environment)
{
case "development":
Server = "SQL1";
Username = "dev.user";
break;
case "test":
Server = "SQL2";
Username = "test.user";
break;
case "production":
Server = "SQL3";
Username = "prod.user";
break;
default:
Server = "SQL1";
Username = "dev.user";
break;
}
}
}
嘗試在switch
語句之前定義您的字符串。 對於每種情況,都必須定義一個break
語句,以使指針脫離switch
結構。
對於您的情況,最好將Server
和Username
定義為屬性,並在靜態類的靜態構造函數中,從對象中定義這些值。 樣品:
public static class Globals
{
// define properties
public static string Server { get; set; }
public static string Username { get; set; }
// encapsulate the Settings.Environment in a property
public public static string Environment
{
get { return MyApp.Properties.Settings.Default.Environment; }
}
// when the application starts, this static scope will execute!
static Globals()
{
switch (environment)
{
case "development":
Server = "SQL1";
Username = "dev.user";
break;
case "test":
Server = "SQL2";
Username = "test.user";
break;
case "production":
Server = "SQL3";
Username = "prod.user";
break;
default:
Server = "SQL1";
Username = "dev.user";
}
}
}
要使用它,只需致電
var server = Globals.Server;
var user = Globals.Username;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.