다음을 통해 공유


프로그램 코드에서 레이어 모델 탐색 및 업데이트

이 항목에서는 프로그램 코드를 사용하여 Visual Studio Ultimate에서 탐색하고 업데이트할 수 있는 레이어 모델의 요소와 관계에 대해 설명합니다.

사용자 관점에서 본 레이어 다이어그램에 대한 자세한 내용은 레이어 다이어그램: 참조레이어 다이어그램: 지침을 참조하세요.

이 항목에서 설명하는 Microsoft.VisualStudio.ArchitectureTools.Extensibility.Layer 모델은 보다 일반적인 Microsoft.VisualStudio.GraphModel 모델의 단순한 버전입니다. 메뉴 명령 또는 제스처 확장을 작성하는 경우에는 Layer 모델을 사용하세요. 레이어 유효성 검사 확장을 작성하는 경우에는 GraphModel을 사용하는 것이 더 쉽습니다.

트랜잭션

모델을 업데이트할 때는 ILinkedUndoTransaction에 변경 내용을 포함할 수도 있습니다. 그러는 경우 변경 내용이 트랜잭션 하나로 그룹화됩니다. 변경 중 하나라도 실패하면 전체 트랜잭션이 롤백됩니다. 사용자가 변경 하나를 실행 취소하면 모든 변경이 함께 실행 취소됩니다.

자세한 내용은 방법: 트랜잭션을 사용하여 모델 업데이트 연결을 참조하십시오.

using (ILinkedUndoTransaction t =
        LinkedUndoContext.BeginTransaction("a name"))
{ 
    // Make changes here ....
    t.Commit(); // Don't forget this!
}

포함

ILayer 및 ILayerModel 모두에 ILayer가 포함될 수 있음

레이어(ILayer) 및 레이어 모델(ILayerModel)은 주석과 레이어를 포함할 수 있습니다.

레이어(ILayer)는 레이어 모델(ILayerModel)에 포함될 수도 있고 다른 ILayer 내에 중첩될 수도 있습니다.

주석이나 레이어를 만들려면 해당 컨테이너에 대해 creation 메서드를 사용합니다.

종속성 링크

종속성 링크는 개체로 표시되며 양방향으로 탐색할 수 있습니다.

ILayerDependencyLink가 두 ILayer를 연결함

종속성 링크를 만들려면 source.CreateDependencyLink(target)를 호출합니다.

설명

주석은 레이어 또는 레이어 모델에 포함될 수 있으며 레이어 요소에 연결할 수도 있습니다.

모든 레이어 요소에 주석을 연결할 수 있음

원하는 수만큼의 요소에 주석을 연결하거나 아무 요소에 연결하지 않을 수도 있습니다.

레이어 요소에 연결된 주석을 가져오려면 다음 코드를 사용합니다.

ILayerModel model = diagram.GetLayerModel(); 
IEnumerable<ILayerComment> comments = 
   model.Comments.Where(comment => 
      comment.Links.Any(link => link.Target == layerElement));

경고

ILayer의 Comments 속성은 ILayer 내에 포함된 주석을 가져옵니다.그러나 이 속성은 그에 연결된 주석은 가져오지 않습니다.

해당하는 컨테이너에서 CreateComment()를 호출하여 주석을 만듭니다.

주석에 대해 CreateLink()를 사용하여 링크를 만듭니다.

레이어 요소

모델에 포함할 수 있는 모든 형식의 요소는 레이어 요소입니다.

레이어 다이어그램 내용이 ILayerElement임

속성

각 ILayerElement에는 Properties라는 문자열 디렉터리가 있습니다. 이 디렉터리를 사용하여 임의의 정보를 레이어 요소에 연결할 수 있습니다.

아티팩트 참조

아티팩트 참조(ILayerArtifactReference)는 파일, 클래스, 폴더 등의 프로젝트 항목과 레이어 간 링크를 나타냅니다. 사용자가 레이어를 만들거나 솔루션 탐색기 또는 아키텍처 탐색기에서 레이어 다이어그램으로 항목을 끌어 레이어에 항목을 추가하면 아티팩트가 만들어집니다. 아티팩트 참조는 원하는 수만큼 레이어에 연결할 수 있습니다.

레이어 탐색기의 각 행은 아티팩트 참조를 표시합니다. 자세한 내용은 코드에서 레이어 다이어그램 만들기을 참조하십시오.

아티팩트 참조와 관된 기본 형식 및 메서드는 다음과 같습니다.

ILayerArtifactReference. Categories 속성은 클래스, 실행 파일, 어셈블리 등 참조되는 아티팩트의 종류를 나타내며 식별자가 대상 아티팩트를 식별하는 방법을 결정합니다.

CreateArtifactReferenceAsyncProject또는 ProjectItem에서 아티팩트 참조를 만듭니다. 이 작업은 비동기 작업입니다. 그러므로 만들기가 완료되면 일반적으로 호출될 콜백을 제공합니다.

레이어 아티팩트 참조를 사용 사례 다이어그램의 아티팩트와 혼동해서는 안 됩니다.

모양 및 다이어그램

레이어 모델의 각 요소를 나타내는 데 사용되는 두 개체는 ILayerElementIShape입니다. IShape는 다이어그램의 모양 크기와 위치를 나타냅니다. 레이어 모델의 모든 ILayerElement마다 IShape 하나가 있고 레이어 다이어그램의 모든 IShape마다 ILayerElement 하나가 있습니다. IShape는 UML 모델에도 사용됩니다. 그러므로 모든 IShape에 레이어 요소가 있는 것은 아닙니다.

마찬가지로 ILayerModelIDiagram 하나에 표시됩니다.

사용자 지정 명령 또는 제스처 처리기의 코드에서는 DiagramContext 가져오기에서 현재 다이어그램 및 현재 모양 선택을 가져올 수 있습니다.

public class ... {
[Import]
    public IDiagramContext DiagramContext { get; set; }
...
public void ... (...) 
{ IDiagram diagram = this.DiagramContext.CurrentDiagram;
  ILayerModel model = diagram.GetLayerModel();
  if (model != null)
  { foreach (ILayer layer in model.Layers) { ... }}
  foreach (IShape selected in diagram.SelectedShapes)
  { ILayerElement element = selected.GetLayerElement();
    if (element != null) ... }}

각 ILayerElement에 대해 IShape가 표시됨

IShapeIDiagram은 UML 모델을 표시할 때도 사용됩니다. 자세한 내용은 방법: 다이어그램에 모델 표시을 참조하십시오.

참고 항목

개념

레이어 다이어그램에 명령 및 제스처 추가

레이어 다이어그램에 사용자 지정 아키텍처 유효성 검사 추가

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

레이어 다이어그램: 참조

레이어 다이어그램: 지침

UML 모델 및 다이어그램 확장