如何通过引用数据结构名称来访问其他字段
本文关键字:访问 其他 字段 何通过 引用 数据结构 | 更新日期: 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
添加更多属性即可轻松扩展此方法