如何通过引用数据结构名称来访问其他字段
问题描述:
我想通过引用它的名称来访问其他字段的数据结构。如何通过引用数据结构名称来访问其他字段
例如:
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
财产使用的语言,您可以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
请改写你的问题进行扩展。目前还不清楚你在问什么。请注意,C#不支持像C和C++这样的语法扩展,而不是简单的运算符重载。 – Dai 2014-11-22 12:26:53
@Dai我想创建一个类来管理我的程序中的错误描述,以便显示给用户。我想用两种语言保存错误和描述的代码。它更好地创建列表?或3D阵列?或结构? ...? – Elahe 2014-11-22 12:29:25