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

업데이트: 2011년 4월

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

사용자 관점에서 레이어 다이어그램에 대한 자세한 내용은 레이어 다이어그램: 참조레이어 다이어그램: 지침을 참조하십시오. 자세한 내용은 Visual Studio 기능 팩을 참조하십시오.

트랜잭션

모델을 업데이트할 때 변경 내용을 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 내에 중첩될 수 있습니다.

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

종속성 링크

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

ILayerDependencyLink가 두 ILayer를 연결함

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

주석

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

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

주석은 개수에 제한 없이 0개 이상의 요소에 연결될 수 있습니다.

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

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 속성은 클래스, 실행 파일 또는 어셈블리와 같은 참조되는 아티팩트의 유형을 나타냅니다. Categories에 따라 식별자가 대상 아티팩트를 식별하는 방법이 결정됩니다.

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

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

모양 및 다이어그램

ILayerElementIShape 개체는 레이어 모델의 각 요소를 나타내는 데 사용됩니다. IShape는 다이어그램에 있는 모양의 위치와 크기를 나타냅니다. 레이어 모델에서 각 ILayerElement에는 IShape가 하나 있으며 레이어 다이어그램의 각 IShape에는 ILayerElement가 하나 있습니다. IShape는 UML 모델에도 사용되므로 레이어 요소가 없는 IShape도 있습니다.

동일한 방식으로 ILayerModel은 한 IDiagram에 표시됩니다.

사용자 지정 명령 또는 제스처 처리기의 코드에서 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 모델을 표시하는 데도 사용됩니다. 자세한 내용은 방법: 다이어그램에 모델 표시을 참조하십시오.

참고 항목

참조

Layer Diagrams: Guidelines

개념

레이어 다이어그램: 참조

UML 모델 및 다이어그램 확장

기타 리소스

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

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

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

변경 기록

날짜

변경 내용

이유

2011년 4월

주석 및 속성 액세스에 대한 정보가 추가되었습니다.

향상된 기능 관련 정보