更新 : 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!
}
コンテインメント
レイヤー (ILayer) およびレイヤー モデル (ILayerModel) は、コメントとレイヤーを含むことができます。
レイヤー (ILayer) は、レイヤー モデル (ILayerModel) に含めることも、別の 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 には 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) ... }}
IShape および IDiagram は、UML モデルの表示にも使用されます。 詳細については、「方法: 図にモデルを表示する」を参照してください。
参照
参照
概念
その他の技術情報
履歴の変更
日付 |
履歴 |
理由 |
---|---|---|
2011 年 4 月 |
Comments および Properties へのアクセスに関する情報を追加しました。 |
情報の拡充 |