使用注册的自定义注册属性扩展

在某些情况下您可能需要创建扩展的新录制属性。 可以使用注册属性添加新的注册表项或添加新的值设置为现有键。 新的属性必须从 RegistrationAttribute派生,因此,它必须重写 RegisterUnregister 方法。

创建自定义特性

下面的代码演示如何创建新录制属性。

[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");
}