using System;
using System.Reflection;
public enum RegHives {
HKEY_CLASSES_ROOT,
HKEY_CURRENT_USER,
HKEY_LOCAL_MACHINE,
HKEY_USERS,
HKEY_CURRENT_CONFIG
}
public class RegKeyAttribute : Attribute {
public RegKeyAttribute(RegHives Hive, String ValueName) {
this.Hive = Hive;
this.ValueName = ValueName;
}
protected RegHives hive;
public RegHives Hive {
get { return hive; }
set { hive = value; }
}
protected String valueName;
public String ValueName {
get { return valueName; }
set { valueName = value; }
}
}
class SomeClass {
[RegKey(RegHives.HKEY_CURRENT_USER, "Foo")]
public int Foo;
public int Bar;
}
class Test {
[STAThread]
static void Main(string[] args) {
Type type = Type.GetType("FieldAttribs.SomeClass");
foreach (FieldInfo field in type.GetFields()) {
foreach (Attribute attr in
field.GetCustomAttributes(true)) {
RegKeyAttribute rka =
attr as RegKeyAttribute;
if (null != rka) {
Console.WriteLine("{0} will be saved in {1}\\\\{2}", field.Name, rka.Hive, rka.ValueName);
}
}
}
}
}
|