Özel Özellikler bir katman Diyagram ekleme
Katman diyagramları için uzantı kodunu yazdığınızda Visual Studio Ultimate, Katman diyagramında herhangi bir öğe ile değerler saklayabilirsiniz.Diyagram kaydedilip yeniden değerleri devam edecek.Görünür bu özelliklere sahip olabilir özelliklerini pencere böylece kullanıcılar görebilir ve düzenleyebilirsiniz.Örneğin, kullanıcıların her katman için normal bir ifade belirtin ve her katmanda sınıflarının adlarını kullanıcı tarafından belirtilen desene uyduğunu için doğrulama kodu yazma olanak verebilir.
Özellikleri kullanıcıya görünmez
Katman diyagramında herhangi bir öğe değerleri eklemek için kod istiyorsanız, bir mef bileşeni tanımlamak gerekmez.Adlı bir sözlük var. Properties , ILayerElement.Herhangi bir katman öğe sözlüğe marshalable değerleri eklemeniz yeterlidir.Katman diyagramı bir parçası olarak kaydedilir.Daha fazla bilgi için bkz. Gezinme ve Program kodu katman modeller güncelleştiriliyor.
Kullanıcının düzenleyebileceği Özellikler
Ön hazırlık
![]() |
---|
Özellikler görünür hale getirmek için Katman Özellikleri görünür olmasını istediğiniz her bilgisayarda aşağıdaki değişiklik yapmalısınız.
|
Kodunuzu bir VSIX projesi olduğundan emin olun
Özelliğinizi komutu, hareketi veya doğrulama projesi parçası ise, hiçbir şey eklemenize gerek yoktur.Visual Studio genişletilebilirliğini projesinde bir mef bileşeni olarak tanımlanan kod, özel özellik için tanımlanmış olmalıdır.Daha fazla bilgi için bkz: Komutlar ve hareket katmanı Diyagram ekleme veya Özel mimari doğrulama katmanı Diyagram ekleme.
Özel özellik tanımlamak
Özel bir özellik oluşturmak için bu gibi bir sınıf tanımlayın:
[Export(typeof(IPropertyExtension))]
public class MyProperty
: PropertyExtension<ILayerElement>
{
// Implement the interface.
}
Temel özellikler tanımlayabilirsiniz ILayerElement veya dahil ondan türetilen sınıflardan biri:
ILayerModel-model
ILayer-her katmanı
ILayerDependencyLink-katmanları arasındaki bağlantılar
ILayerComment
ILayerCommentLink
Kendi özel özelliklerini görmek için
![]() |
---|
Modelleme projesi yük önce Mimari Gezgini yalnızca açık olan özel özellikleri görüntülenir.Mimari Gezgini'ni açın ve sonra durur ve özel özelliklerini görmek için Visual Studio'yu yeniden gerekebilir.Üzerinde Mimari menüsünden seçin Windows, Mimari Gezgini. |
Kendi özel özelliklerini sınamak için Visual Studio'nun deneysel örneği başlatmak için F5 tuşuna basın.Uygun katmanı öğesi örneği oluşturun ve bunu seçin.Kendi özel özellik Özellikler penceresinde görürsünüz.
Örnek
Tipik bir özel özellik tanımlayıcısı aşağıdaki koddur.Katman model üzerinde bir Boolean özelliği tanımladığı (ILayerModel) değerlerini sağlamak için bir özel doğrulama yöntemi kullanıcı sağlar.
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;
}
}
}
}