我想拥有数据结构,通过引用它的名称,我可以访问其他字段。
例如:
value1: "21", "value 1", "AAA"
value2: "23", "value 2", "BBB"
value3: "35", "value 3", "CCC"
我希望能够访问这样的数据结构:
MyStructure.value1 -- > return "value 1" and "AAA"
您更喜欢哪种数据结构? 谢谢你的帮助
答案 0 :(得分: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
属性中选择要使用的语言。您可以使用GetString(String name, CultureInfo culture)
重载来覆盖此选项以强制选择语言。
答案 1 :(得分: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
答案 2 :(得分: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