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

本文关键字:访问 其他 字段 何通过 引用 数据结构 | 更新日期: 2023-09-27 18:31:26

我希望拥有数据结构,通过引用它的名称,我可以访问其他字段。

例如:

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

我想访问这样的数据结构:

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

您更喜欢哪种数据结构?感谢您的任何帮助

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

根据您的评论,您希望以多种语言存储错误描述。不要在程序代码中嵌入人类可读的字符串,而应使用资源文件。我不会解释如何使用它们,而是建议您在线搜索".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 属性中选择要使用的语言。您可以使用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

您希望将值映射到复杂对象。最好使用字典来完成此操作。首先,您必须设计一个类,该类保存单个值的所有数据:

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

然后,您可以定义一个字典,该字典从错误代码映射到关联的错误信息:

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添加更多属性即可轻松扩展此方法