使用注册的自定义注册属性扩展
在某些情况下您可能需要创建扩展的新录制属性。 可以使用注册属性添加新的注册表项或添加新的值设置为现有键。 新的属性必须从 RegistrationAttribute派生,因此,它必须重写 Register 和 Unregister 方法。
创建自定义特性
下面的代码演示如何创建新录制属性。
[AttributeUsage(AttributeTargets.Class, Inherited = true, AllowMultiple = false)]
public class CustomRegistrationAttribute : RegistrationAttribute
{
}
AttributeUsageAttribute 在属性类用于指定编程元素 (类,方法等) 属性适用于,是否可以多次使用它,因此,它是否可以继承。
创建注册表项
在下面的代码中,自定义属性创建自定义子级在注册的 VSPackage 的项下。
public override void Register(RegistrationAttribute.RegistrationContext context)
{
Key packageKey = null;
try
{
packageKey = context.CreateKey(@"Packages\{" + context.ComponentType.GUID + @"}\Custom");
packageKey.SetValue("NewCustom", 1);
}
finally
{
if (packageKey != null)
packageKey.Close();
}
}
public override void Unregister(RegistrationContext context)
{
context.RemoveKey(@"Packages\" + context.ComponentType.GUID + @"}\Custom");
}
创建在现有的注册表项下的新值
可以将自定义值传递给现有项。 下面的代码演示如何将新值赋给 VSPackage 注册键。
public override void Register(RegistrationAttribute.RegistrationContext context)
{
Key packageKey = null;
try
{
packageKey = context.CreateKey(@"Packages\{" + context.ComponentType.GUID + "}");
packageKey.SetValue("NewCustom", 1);
}
finally
{
if (packageKey != null)
packageKey.Close();
}
}
public override void Unregister(RegistrationContext context)
{
context.RemoveValue(@"Packages\" + context.ComponentType.GUID, "NewCustom");
}