适合成为班级成员

时间:2010-01-09 16:41:46

标签: .net

有没有办法枚举或简单地将每个枚举成.net中的一个类的成员变量? 我有一个静态类,我想用它来保存应用程序设置,所以在保存设置时我基本上想要将静态类的值复制到包含同一组(非静态)变量的类的实例

所以我想“只要我能预约甚至为()(就此而言......无意中),这将更容易

4 个答案:

答案 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方法。