如何通过引用数据结构名称来访问其他字段

问题描述:

我想通过引用它的名称来访问其他字段的数据结构。如何通过引用数据结构名称来访问其他字段

例如:

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

根据你的评论,你想存储多种语言的错误描述。不要在程序代码中嵌入可读的字符串,而要使用资源文件。我不会解释如何使用它们,而是我会引用你在线搜索“.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)重载,强制选择语言。

试试这个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 

要映射一个值到一个复杂的对象。这最好使用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