📄 class1.cs
字号:
using System;
using System.Reflection;
namespace AttribParams
{
public enum RegHives
{
HKEY_CLASSES_ROOT = 1,
HKEY_CURRENT_USER,
HKEY_LOCAL_MACHINE,
HKEY_USERS,
HKEY_CURRENT_CONFIG
}
public class RegKeyAttribute : Attribute
{
// public RegKeyAttribute(RegHives Hive, String ValueName)
public RegKeyAttribute(String ValueName)
{
// this.Hive = Hive; // defaults to 0, ie RegHives.HKEY_CLASSES_ROOT
if (this.Hive == 0)
this.Hive = RegHives.HKEY_CURRENT_USER;
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
{
// either
[RegKey("Foo")]
public int Foo;
// or
// [RegKey("Foo", Hive = RegHives.HKEY_LOCAL_MACHINE)]
// public int Foo;
// Error: positional parameters cannot follow
// named parameters.
// [RegKey(Hive=RegHives.HKEY_LOCAL_MACHINE, "Foo")]
// public int Foo;
// Error: no positional parameters supplied
// [RegKey(ValueName="Foo", Hive=RegHives.HKEY_LOCAL_MACHINE)]
// public int Bar;
}
class Test
{
[STAThread]
static void Main(string[] args)
{
Type type = Type.GetType("AttribParams.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);
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -