다음을 통해 공유


레이어 다이어그램에 사용자 지정 속성 추가

레이어 다이어그램에 대한 확장 코드를 작성할 때 Visual Studio Ultimate, 레이어 다이어그램에 요소를 사용 하 여 값을 저장할 수 있습니다.다이어그램을 저장 하 고 다시 열 때 값을 유지 합니다.이 속성에 표시 되도록 할 수도 있습니다의 속성 창 사용자 확인 하 고 편집할 수 있습니다.예를 들어, 각 계층에 대한 정규식을 지정 하 고 각 계층에서 클래스의 이름을 사용자가 지정한 패턴과 일치 하는지 확인할 수 있는 유효성 검사 코드를 작성 하는 사용자 수 있습니다 수 있습니다.

사용자에 게 표시 되지 않는 속성

레이어 다이어그램에 있는 모든 요소에 값을 연결 하는 코드 바로 원한다 면 MEF 구성 요소를 정의할 필요가 없습니다.라는 하는 사전이 Properties 에서 ILayerElement.레이어 요소를 사전에 마샬링할 수 값을 추가 하기만 하면 됩니다.레이어 다이어그램의 일부로 저장 됩니다.자세한 내용은 프로그램 코드에서 레이어 모델 탐색 및 업데이트을 참조하십시오.

사용자가 편집할 수 있는 속성

초기 준비

중요중요

속성을 표시 하려면 레이어 속성을 표시 하려면 원하는 각 컴퓨터에서 다음과 같이 변경 해야 합니다.

  1. 메모장을 사용 하 여 실행 관리자 권한으로 실행.%ProgramFiles%\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Architecture Tools\ExtensibilityRuntime\extension.vsixmanifest를 엽니다.

  2. 내는 Content 요소를 추가 합니다.

    <MefComponent>Microsoft.VisualStudio.ArchitectureTools.Extensibility.Layer.Provider.dll</MefComponent>
  3. 아래에서 Windows 시작 메뉴, Microsoft Visual Studio 2012, Visual Studio 도구을 열고 개발자 명령 프롬프트.

    입력:

    devenv /rootSuffix /updateConfiguration

    devenv /rootSuffix Exp /updateConfiguration

  4. Visual Studio를 다시 시작합니다.

VSIX 프로젝트에 코드를 있는지 확인 하십시오

속성 명령이 나 제스처, 유효성 검사 프로젝트의 일부인 경우 아무 것도 추가 하지 않아도 됩니다.MEF 구성 요소로 정의 된 Visual Studio 확장성 프로젝트에서 사용자 지정 속성에 대한 코드를 정의 합니다.자세한 내용은 레이어 다이어그램에 명령 및 제스처 추가 또는 레이어 다이어그램에 사용자 지정 아키텍처 유효성 검사 추가를 참조하십시오.

사용자 지정 속성을 정의 합니다.

사용자 지정 속성을 만들려면 다음과 같이 클래스를 정의 합니다.

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

속성을 정의할 수 있습니다 ILayerElement 또는 해당 파생된 클래스를 포함 합니다.

  • ILayerModel - 모델

  • ILayer - 각 레이어

  • ILayerDependencyLink - 레이어 간의 링크

  • ILayerComment

  • ILayerCommentLink

사용자 지정 속성을 보려면

중요중요

모델링 프로젝트를 로드 하기 전에 아키텍처 탐색기 열기 경우에 사용자 지정 속성을 표시 합니다.아키텍처 탐색기를 열고 다음 중지 하 고 사용자 지정 속성을 보려면 Visual Studio 다시 시작 해야 합니다.에 아키텍처 메뉴를 선택 Windows, 아키텍처 탐색기.

사용자 지정 속성을 테스트 하려면 Visual Studio 실험 인스턴스를 시작 하려면 f5 키를 누릅니다.적절 한 레이어 요소의 예로 만들고 선택 합니다.사용자 지정 속성이 속성 창에 표시 됩니다.

예제

다음 코드는 일반적인 사용자 지정 속성 설명자입니다.이 코드에서는 사용자가 사용자 지정 유효성 검사 메서드에 값을 제공할 수 있도록 하는 레이어 모델의 부울 속성(ILayerModel)을 정의합니다.

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;
      }
    }
  }
}

참고 항목

개념

레이어 다이어그램 확장