À l'aide d'un attribut personnalisé d'alignement pour enregistrer une extension
Dans certains cas vous devrez peut-être créer un attribut de nouvelle inscription de votre extension. Vous pouvez utiliser des attributs d'alignement pour ajouter de nouvelles clés de Registre ou ajouter de nouvelles valeurs à exister des clés. Le nouvel attribut doit dériver de RegistrationAttribute, et il doit substituer l' Register et les méthodes d' Unregister .
Création d'un attribut personnalisé
Le code suivant montre comment créer un attribut de nouvelle inscription.
[AttributeUsage(AttributeTargets.Class, Inherited = true, AllowMultiple = false)]
public class CustomRegistrationAttribute : RegistrationAttribute
{
}
AttributeUsageAttribute est utilisé sur les classes d'attributs pour spécifier l'élément de programme (classe, méthode, etc.) lequel l'attribut appartient, s'il peut être utilisé plusieurs fois, et s'il peut être héritée.
créer une clé de Registre
Dans le code suivant, l'attribut personnalisé crée une sous-clé personnalisée sous la clé pour le VSPackage qui est stocké.
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");
}
Créer une nouvelle valeur dans une clé de Registre existante
Vous pouvez ajouter des valeurs personnalisées à une clé existante. Le code suivant montre comment ajouter une nouvelle valeur dans une clé d'alignement d'un 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");
}