共用方式為


巡覽及更新程式碼中的圖層模型

更新:2011 年 4 月

這個 Visual Studio 2010 功能套件可讓您使用程式碼來巡覽和更新 Visual Studio 2010 Ultimate 中的圖層模型。 本主題將描述圖層模型中的項目和關聯性。

如需圖層圖表 (從使用者的觀點來看) 的詳細資訊,請參閱圖層圖表:參考圖層圖表:方針。 如需詳細資訊,請參閱 Visual Studio 功能套件

交易

當您更新模型時,請考慮在 ILinkedUndoTransaction 中封入變更。 這樣做會將您的變更組成單一交易。 如果任何變更失敗,整個交易都將回復。 如果使用者復原某項變更,所有變更都將一起復原。

如需詳細資訊,請參閱HOW TO:使用交易連結模型更新

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

內含項目

ILayer 和 ILayerModel 都可以包含 ILayers。

圖層 (ILayer) 和圖層模型 (ILayerModel) 可以包含註解和圖層。

圖層 (ILayer) 可以包含在圖層模型 (ILayerModel) 中,也可以用巢狀方式置於其他 ILayer 中。

若要建立註解或圖層,請在適當的容器上使用建立方法。

相依性連結

相依性連結是以物件表示。 您可以沿著任何一種方向巡覽此連結:

ILayerDependencyLink 會連接兩個 ILayers。

若要建立相依性連結,請呼叫 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(),藉以建立連結。

圖層項目

可包含在模型中的所有項目類型都是圖層項目:

圖層圖表內容為 ILayerElements。

屬性

每個 ILayerElement 都具有名為 Properties 的字串字典。 您可以使用這個字典,將任意資訊附加至任何圖層項目。

成品參考

成品參考 (ILayerArtifactReference) 代表圖層與專案項目 (例如檔案、類別或資料夾) 之間的連結。 當使用者將項目從 [方案總管] 或 [架構總管] 拖曳至圖層圖表,藉以建立或加入至圖層時,他們實際上就是建立成品。 您可以將任何數目的成品參考連結至圖層。

[圖層總管] 中的每個資料列都會顯示成品參考。 如需詳細資訊,請參閱HOW TO:從成品建立圖層圖表

與成品參考有關的主體型別和方法如下:

ILayerArtifactReference. Categories 屬性會指出所參考的成品種類,例如類別、可執行檔或組件。 Categories 會決定識別項如何識別目標成品。

CreateArtifactReferenceAsync() 會根據 ProjectProjectItem 建立成品參考。 這是一項非同步作業。 因此,您通常會提供在建立完成時所呼叫的回呼。

圖層成品參考不應該與使用案例圖表中的成品混淆。

圖案和圖表

有兩個物件會用來代表圖層模型中的每個項目: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 模型。 如需詳細資訊,請參閱HOW TO:在圖表上顯示模型

請參閱

參考

Layer Diagrams: Guidelines

概念

圖層圖表:參考

其他資源

在圖層圖表中加入命令和軌跡

在圖層圖表中加入自訂架構驗證

將自訂屬性加入至圖層圖表

擴充 UML 模型與圖表

變更記錄

日期

記錄

原因

2011 年 4 月

已加入有關存取註解和屬性的資訊。

資訊加強。