更新 : 2011 年 4 月
この Visual Studio 2010 Feature Pack を使用すると、プログラム コードを使用して、Visual Studio 2010 Ultimate のレイヤー モデル内の移動およびレイヤー モデルの更新を実行できます。 このトピックでは、レイヤー モデルでの要素と関係について説明します。
ユーザーから見たレイヤー図の詳細については、「レイヤー図: リファレンス」および「レイヤー図: ガイドライン」を参照してください。 詳細については、「Visual Studio Feature Pack」を参照してください。
トランザクション
モデルを更新するときは、変更を ILinkedUndoTransaction 内に収めることを検討します。 このようにすると、変更が 1 つのトランザクションにまとまります。 いずれかの変更が失敗した場合、トランザクション全体がロールバックされます。 ユーザーが変更を元に戻す場合は、すべての変更が一緒に元に戻されます。
詳細については、「方法: トランザクションを使用してモデルの更新をリンクする」を参照してください。
using (ILinkedUndoTransaction t =
LinkedUndoContext.BeginTransaction("a name"))
{
// Make changes here ....
t.Commit(); // Don't forget this!
}
コンテインメント
.png)
レイヤー (ILayer) およびレイヤー モデル (ILayerModel) は、コメントとレイヤーを含むことができます。
レイヤー (ILayer) は、レイヤー モデル (ILayerModel) に含めることも、別の ILayer 内に入れ子にすることもできます。
コメントまたはレイヤーを作成するには、適切なコンテナーの作成メソッドを使用します。
依存関係リンク
依存関係リンクはオブジェクトによって表されます。 どちらの方向にも移動できます。
.png)
依存関係リンクを作成するには、source.CreateDependencyLink(target) を呼び出します。
コメント
コメントはレイヤーまたはレイヤー モデルの内部に含めることができ、任意のレイヤー要素にリンクすることもできます。
.png)
コメントは任意の数の要素にリンクできます。0 でもかまいません。
レイヤー要素にアタッチされたコメントを取得するには、次のようにします。
ILayerModel model = diagram.GetLayerModel();
IEnumerable<ILayerComment> comments =
model.Comments.Where(comment =>
comment.Links.Any(link => link.Target == layerElement));
ヒント
ILayer の Comments プロパティは、ILayer に含まれるコメントを取得します。 自身にリンクされているコメントは取得しません。
コメントを作成するには、適切なコンテナーで CreateComment() を呼び出します。
リンクを作成するには、コメントで CreateLink() を使用します。
レイヤー要素
モデルに含めることができる要素の種類はすべて、レイヤー要素です。
.png)
プロパティ
各 ILayerElement には Properties という名前の文字列ディクショナリがあります。 このディクショナリを使用して、任意の情報をレイヤー要素にアタッチできます。
成果物参照
成果物参照 (ILayerArtifactReference) は、レイヤーと、ファイル、クラス、フォルダーなどのプロジェクト アイテムの間のリンクを表します。 ユーザーがソリューション エクスプローラーまたはアーキテクチャ エクスプローラーからレイヤー図にアイテムをドラッグして、レイヤーの作成またはレイヤーへの追加を行うと、成果物が作成されます。 任意の数の成果物参照を、1 つのレイヤーにリンクできます。
レイヤー エクスプローラーの各行には成果物参照が表示されます。 詳細については、「方法: 成果物からレイヤー図を生成する」を参照してください。
成果物参照に関するプリンシパル型とメソッドは次のとおりです。
ILayerArtifactReference. Categories プロパティは、参照されている成果物の種類 (クラス、実行可能ファイル、アセンブリなど) を示します。 Categories により、Identifier がターゲット成果物を示す方法が決まります。
CreateArtifactReferenceAsync() は、Project または ProjectItem から成果物参照を作成します。 これは非同期操作です。 したがって、通常は、作成が完了すると呼び出されるコールバックを指定します。
レイヤーの成果物参照を、ユース ケース図の成果物と混同しないでください。
図形と図
レイヤー モデル内の各要素を表すには、ILayerElement および IShape という 2 つのオブジェクトが使用されます。 IShape は、図での図形の位置とサイズを表します。 レイヤー モデルでは、すべての ILayerElement には 1 つの IShape があり、レイヤー図上のすべての IShape には ILayerElement があります。 IShape は UML モデルにも使用されます。 したがって、すべての IShape にレイヤー要素があるわけではありません。
同様に、ILayerModel は 1 つの 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) ... }}
.png)
IShape および IDiagram は、UML モデルの表示にも使用されます。 詳細については、「方法: 図にモデルを表示する」を参照してください。
参照
参照
概念
その他の技術情報
履歴の変更
日付 |
履歴 |
理由 |
|---|---|---|
|
2011 年 4 月 |
Comments および Properties へのアクセスに関する情報を追加しました。 |
情報の拡充 |