2014-11-22 113 views
0

我想通過引用它的名稱來訪問其他字段的數據結構。如何通過引用數據結構名稱來訪問其他字段

例如:

value1: "21", "value 1", "AAA" 
value2: "23", "value 2", "BBB" 
value3: "35", "value 3", "CCC" 

我想有這樣的訪問數據結構:

MyStructure.value1 -- > return "value 1" and "AAA" 

什麼數據結構做ü喜歡哪一種? 感謝您的任何幫助

+0

請改寫你的問題進行擴展。目前還不清楚你在問什麼。請注意,C#不支持像C和C++這樣的語法擴展,而不是簡單的運算符重載。 – Dai 2014-11-22 12:26:53

+0

@Dai我想創建一個類來管理我的程序中的錯誤描述,以便顯示給用戶。我想用兩種語言保存錯誤和描述的代碼。它更好地創建列表?或3D陣列?或結構? ...? – Elahe 2014-11-22 12:29:25

回答

3

根據你的評論,你想存儲多種語言的錯誤描述。不要在程序代碼中嵌入可讀的字符串,而要使用資源文件。我不會解釋如何使用它們,而是我會引用你在線搜索「.net資源本地化」以找到大量的文章和教程。

爲每種語言創建一個資源文件(給它一個合適的名稱),然後將這些消息添加到文件中。我建議使用一個枚舉作爲一個鍵(在技術上,枚舉的ToString()值將作爲關鍵,就像這樣:

enum ErrorMessage { 
    OutOfMemory, 
    PEBCAK, 
    IdTenTError, 
    // etc... 
} 

public static class ResourceHelper { 
    public static String GetMessage(ErrorMessage message) { 
      String key = "ErrorMessage_" + message.ToString(); 
      return ResourceManager.GetString(key); 
    } 
} 

你的英語(en-US)的資源文件將包含此:

ErrorMessage_OutOfMemory "Out of memory" 
ErrorMessage_PEBCAK  "er..." 
ErrorMessage_IdTenTError "Who is writing these error messages?" 

重複其他語言,如FR-FR:

ErrorMessage_OutOfMemory "Manque de mémoire" 
ErrorMessage_PEBCAK  "Problème existe entre chaise et le clavier" 
ErrorMessage_IdTenTError "Moins on en dit mieux" 

ResourceManager.GetString方法選擇從Thread.CurrentThread.CurrentUICulture財產使用的語言,您可以overrride THI。 s與GetString(String name, CultureInfo culture)重載,強制選擇語言。

1

試試這個msdn

class Foo 
    { 
     public string Value { get; set; } 
     public string OtherValue { get; set; } 
    } 

    var dictionary = new Dictionary<string, Foo>(); 
    dictionary.Add("21", new Foo { Value = "value 1", OtherValue = "AAA" }); 
    dictionary.Add("23", new Foo { Value = "value 2", OtherValue = "BBB" }); 
    dictionary.Add("35", new Foo { Value = "value 3", OtherValue = "CCC" }) 
    var foo = dictionary["21"]; 
    //foo.OtherValue 
    //foo.Value 
1

要映射一個值到一個複雜的對象。這最好使用Dictionary來完成。首先你要設計一個包含所有數據的單個值類:

class ErrorInfo 
{ 
    public ErrorInfo(string descriptionEN, string descriptionDE) 
    { 
     DescriptionEN = descriptionEN; 
     DescriptionDE = descriptionDE; 
    } 

    public string DescriptionEN {get; private set;} 
    public string DescriptionDE {get; private set;} 
} 

然後你就可以定義從錯誤代碼映射到相關ERRORINFO的字典:

var dict = new Dictionar<string, ErrorInfo>(); 

您還必須填寫字典:

dict.Add("1", new ErrorInfo("An error ocurred", "Ein Fehler ist aufgetreten")); 
dict.Add("2", new ErrorInfo("Unknown error", "Unbekannter Fehler")); 
// etc. 

得到一個錯誤的信息,如果你只有錯誤代碼很簡單:

ErrorInfo info = dict["1"]; 

這種方法可以很容易地通過簡單地增加更多的屬性ErrorInfo

相關問題