Přidání vlastní vlastnosti vrstvy diagramu
Při psaní kódu rozšíření pro diagramy vrstvy v Visual Studio Ultimate, lze ukládat hodnoty pomocí jakéhokoli prvku diagramu vrstvy.Hodnoty bude přetrvávat po uložení a opětovném otevření diagramu.Můžete také nastavit tyto vlastnosti se zobrazí v Vlastnosti okna tak, aby uživatelé mohou zobrazit a upravovat.Například může umožnit uživatelům určit regulární výraz pro každou vrstvu a napsat kód pro ověřování ověřit shodu názvy tříd, v každé vrstvě vzoru určeného uživatelem.
Vlastnosti, které nejsou viditelné pro uživatele
Pokud chcete kód hodnoty připojit k libovolnému prvku v diagramu vrstvy, není nutné definovat Komponenta MEF.Je k dispozici slovník s názvem Properties v ILayerElement.Marshalable hodnoty stačí přidáte do slovníku libovolný prvek vrstvy.Jsou ukládány jako část diagramu vrstvy.Další informace naleznete v tématu Navigace a aktualizaci vrstvy modely v kódu programu.
Vlastnosti, které uživatel může upravovat.
Počáteční přípravu
![]() |
---|
Chcete-li zobrazit vlastnosti, musí proveďte následující změnu v každém počítači, kde má vlastnosti vrstvy, které mají být zobrazeny.
|
Zkontrolujte, zda že je váš kód v projektu VSIX
Pokud vaše vlastnost je součástí příkazu, gesta a ověření projektu, není třeba nic přidat.V projektu aplikace Visual Studio rozšiřitelnost definován jako Komponenta MEF stanovit kód pro vlastní vlastnost.Další informace naleznete v tématech Přidání příkazů a gesta diagramy vrstvy a Přidání vlastní ověření architektura diagramy vrstvy.
Definovat vlastní vlastnosti
Chcete-li vytvořit vlastní vlastnost, definování třídy následujícím způsobem:
[Export(typeof(IPropertyExtension))]
public class MyProperty
: PropertyExtension<ILayerElement>
{
// Implement the interface.
}
Můžete definovat vlastnosti na ILayerElement nebo některý z jeho odvozených tříd, které zahrnují:
ILayerModel-model
ILayer-Každá vrstva
ILayerDependencyLink-propojení mezi vrstvami
ILayerComment
ILayerCommentLink
Chcete-li zobrazit vlastní vlastnosti
![]() |
---|
Vlastní vlastnosti se zobrazí pouze v případě, že před načtením modelování projektu otevřeném Průzkumníku architektury.Pravděpodobně budete muset otevřít Průzkumníka architektury a poté zastavte a restartujte aplikaci Visual Studio-li zobrazit vlastní vlastnosti.Na Architektura nabídce zvolte Windows, Explorer architektura. |
Testování vlastní vlastnosti, stisknutím klávesy F5 spustíte experimentální instanci aplikace Visual Studio.Vytvořit příklad elementu příslušnou vrstvu a vyberte jej.Zobrazí se vaše vlastní vlastnosti v okně Vlastnosti.
Příklad
Následující kód je popisovač typické vlastních vlastností.Definuje vlastnost typu Boolean na vrstvě modelu (ILayerModel), která umožňuje uživateli zadat hodnoty pro vlastní ověřovací metodu.
using System;
using System.ComponentModel.Composition;
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Layer;
namespace MyNamespace
{
/// <summary>
/// Custom properties are added to the Layer Designer via a custom
/// Property Descriptor. We have to export this Property Descriptor
/// using MEF to make it available in the Layer Designer.
/// </summary>
[Export(typeof(IPropertyExtension))]
public class AllTypesMustBeReferencedProperty
: PropertyExtension<ILayerModel>
{
/// <summary>
/// Each custom property must have a unique name.
/// Usually we use the full name of this class.
/// </summary>
public static readonly string FullName =
typeof(AllTypesMustBeReferencedProperty).FullName;
/// <summary>
/// Construct the property. Notice the use of FullName.
/// </summary>
public AllTypesMustBeReferencedProperty()
: base(FullName)
{ }
/// <summary>
/// The display name is shown in the Properties window.
/// We therefore use a localizable resource.
/// </summary>
public override string DisplayName
{
get { return Strings.AllTypesMustBeReferencedDisplayName; }
}
/// <summary>
/// Description shown at the bottom of the Properties window.
/// We use a resource string for easier localization.
/// </summary>
public override string Description
{
get { return Strings.AllTypesMustBeReferencedDescription; }
}
/// <summary>
/// This is called to set a new value for this property. We must
/// throw an exception if the value is invalid.
/// </summary>
/// <param name="component">The target ILayerElement</param>
/// <param name="value">The new value</param>
public override void SetValue(object component, object value)
{
ValidateValue(value);
base.SetValue(component, value);
}
/// <summary>
/// Helper to validate the value.
/// </summary>
/// <param name="value">The value to validate</param>
private static void ValidateValue(object value)
{ }
public override Type PropertyType
{ get { return typeof(bool); } }
/// <summary>
/// The segment label of the properties window.
/// </summary>
public override string Category
{
get
{
return Strings.AllTypesMustBeReferencedCategory;
}
}
}
}