有没有办法枚举或简单地将每个枚举成.net中的一个类的成员变量? 我有一个静态类,我想用它来保存应用程序设置,所以在保存设置时我基本上想要将静态类的值复制到包含同一组(非静态)变量的类的实例
所以我想“只要我能预约甚至为()(就此而言......无意中),这将更容易
答案 0 :(得分:2)
您可以使用反射。如果obj是您要查看的对象:
foreach (FieldInfo fi in obj.GetType ().GetFields ())
Console.WriteLine ("{0} : {1}", fi.Name, fi.GetValue (obj));
同样,PropertyInfo枚举属性。
答案 1 :(得分:1)
使用反射排序:
instance.GetType().GetFields(BindingFlags.Public|BindingFlags.NonPublic|BindingFlags.Instance);
但这确实有一些限制,例如反射的安全要求。
答案 2 :(得分:1)
根据您的说明,Dictionary将是存储应用程序设置的良好数据类型:
Dictionary<string, string> settings = new Dictionary<string, string>();
settings["key1"] = "value";
settings["key2"] = "value";
Dictionary<string, string> copy = new Dictionary<string, string>(settings);
copy["key1"] = "override value";
foreach (KeyValuePair<string, string> kv in copy) {
Console.WriteLine("Key {0} has value {1}", kv.Key, kv.Value);
}
更低级别的事情是使用反射来检索类的成员或字段:
foreach (MemberInfo mi in Type.GetType(MyClass).GetMembers()) {
Console.WriteLine("Member {0} has type {1}",
mi.Name, mi.MemberType().ToString());
}
答案 3 :(得分:0)
也许您正在寻找Type.GetFields方法。