Sdílet prostřednictvím


Přidání vlastních vlastností do diagramu vrstev

Při psaní kódu rozšíření pro diagramy vrstvy v aplikaci Visual Studio Ultimate můžete ukládat hodnoty libovolným prvkem na diagram vrstvy.Hodnoty přetrvají i po uložení a opětovném otevření diagramu.Můžete také tyto vlastnosti zobrazit v okně Vlastnosti, takže uživatelé je mohou vidět a upravovat.Například můžete umožnit uživatelům určit regulární výraz pro každou vrstvu a psát ověřovací kód pro ověření, že názvy tříd v každé vrstvě odpovídají vzoru určenému uživatelem.

Vlastnosti, které nejsou viditelné uživateli

Pokud chcete připojit k libovolnému prvku v diagramu vrstvy hodnoty kódu, není nutné definovat komponentu MEF.Existuje slovník s názvem Properties v ILayerElement.Stačí přidat zařaditelné hodnoty do slovníku libovolného prvku vrstvy.Budou uloženy jako části diagramu vrstvy.Další informace naleznete v tématu Procházení a aktualizace modelů vrstev v programovém kódu.

Vlastnosti, které uživatel může upravovat

Počáteční příprava

Důležitá poznámkaDůležité

Chcete-li zobrazit vlastnosti, je třeba provést následující změnu v každém počítači, kde chcete mít viditelné vlastnosti vrstvy.

  1. Spusťte program Poznámkový blok s funkcí Spustit jako správce.Otevřete %ProgramFiles%\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Architecture Tools\ExtensibilityRuntime\extension.vsixmanifest.

  2. Uvnitř prvku Content přidejte:

    <MefComponent>Microsoft.VisualStudio.ArchitectureTools.Extensibility.Layer.Provider.dll</MefComponent>
  3. V nabídce Start systému Windows, v části Microsoft Visual Studio 2012, Visual Studio Tools otevřete Příkazový řádek vývojáře.

    Zadejte:

    devenv /rootSuffix /updateConfiguration

    devenv /rootSuffix Exp /updateConfiguration

  4. Restartujte aplikaci Visual Studio.

Zkontrolujte, zda že je váš kód v projektu VSIX

Pokud je vaše vlastnost součástí příkazu, gesta nebo projektu ověření, nepotřebujete nic přidat.Kód pro vaši vlastní vlastnost by měl být definován v projektu rozšíření Visual Studio definovaném jako komponenta MEF.Další informace naleznete v tématech Přidávání příkazů a gest do diagramů vrstev a Přidání ověření vlastní architektury do diagramů vrstev.

Definovat vlastní vlastnost

Chcete-li vytvořit vlastní vlastnost, definujte třídu takto:

[Export(typeof(IPropertyExtension))]
public class MyProperty 
      : PropertyExtension<ILayerElement>
{
  // Implement the interface.
}

Můžete definovat vlastnosti v ILayerElement nebo některé z odvozených tříd, mezi které patří:

  • ILayerModel - model

  • ILayer - každá vrstva

  • ILayerDependencyLink - propojení mezi vrstvami

  • ILayerComment

  • ILayerCommentLink

Zobrazení vlastních vlastností

Důležitá poznámkaDůležité

Vlastní vlastnosti se zobrazí pouze v případě, že před načtením projektu modelování je otevřen Průzkumník architektury.Bude možná nutné otevřít Průzkumník architektury a poté zastavit a restartovat aplikaci Visual Studio, aby bylo možné zobrazit vlastní vlastnosti.V nabídce Architektura zvolte položku Okna, Průzkumník architektury.

Chcete-li otestovat vlastní vlastnosti, stiskněte klávesu F5 a spusťte experimentální instanci aplikace Visual Studio.Vytvořte příklad elementu příslušné vrstvy a vyberte jej.Vlastní vlastnosti se zobrazí v okně Vlastnosti.

Příklad

Následující kód je typický vlastní popisovač vlastnosti.Definuje booleovskou vlastnost na modelu vrstvy (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;
      }
    }
  }
}

Viz také

Koncepty

Rozšíření diagramů vrstev