Navigation et mise à jour des modèles de couche dans le code de programme
Ce Feature Pack Visual Studio 2010 vous permet de parcourir et de mettre à jour les modèles de couche dans Visual Studio 2010 Ultimate à l'aide du code de programme. Cette rubrique décrit les éléments et les relations dans les modèles de couche.
Pour plus d'informations sur les diagrammes de couche du point de vue de l'utilisateur, consultez Diagrammes de couche : référence et Diagrammes de couche : instructions. Pour plus d'informations, consultez Packs de fonctionnalités Visual Studio.
Transactions
Lorsque vous mettez à jour un modèle, envisagez de placer les modifications dans ILinkedUndoTransaction. Cela regroupe vos modifications dans une transaction. En cas d'échec de l'une des modifications, la transaction entière sera restaurée. Si l'utilisateur annule une modification, toutes les modifications seront annulées ensemble.
Pour plus d'informations, consultez Comment : lier des mises à jour de modèles à l'aide de transactions.
using (ILinkedUndoTransaction t =
LinkedUndoContext.BeginTransaction("a name"))
{
// Make changes here ....
t.Commit(); // Don't forget this!
}
Relation contenant-contenu
Les couches (ILayer) et le modèle de couche (ILayerModel) peuvent contenir des commentaires et des couches.
Une couche (ILayer) peut être contenue dans un modèle de couche (ILayerModel) ou peut être imbriquée dans une autre ILayer.
Pour créer un commentaire ou une couche, utilisez les méthodes de création sur le conteneur approprié.
Liens de dépendance
Un lien de dépendance est représenté par un objet. Il peut être parcouru dans un sens ou dans l'autre :
Pour créer un lien de dépendance, appelez source.CreateDependencyLink(target).
Commentaires
Les commentaires peuvent être contenus dans les couches ou le modèle de couche, et peuvent également être liés à tout élément de couche :
Un commentaire peut être lié à n'importe quel nombre d'éléments, et même à aucun.
Pour obtenir les commentaires joints à un élément de couche, utilisez :
ILayerModel model = diagram.GetLayerModel();
IEnumerable<ILayerComment> comments =
model.Comments.Where(comment =>
comment.Links.Any(link => link.Target == layerElement));
Avertissement
La propriété Comments d'une ILayer obtient les commentaires contenus dans la ILayer. Elle n'obtient pas les commentaires liés à elle.
Créez un commentaire en appelant CreateComment() sur le conteneur approprié.
Créez un lien en utilisant CreateLink() sur le commentaire.
Éléments de couche
Tous les types d'éléments qui peuvent être contenus dans un modèle sont des éléments de couche :
Propriétés
Chaque ILayerElement a un dictionnaire de chaîne nommé Properties. Vous pouvez utiliser ce dictionnaire pour joindre des informations arbitraires à tout élément de couche.
Références d'artefact
Une référence d'artefact (ILayerArtifactReference) représente le lien entre une couche et un élément de projet tels qu'un fichier, une classe ou un dossier. Lorsque l'utilisateur crée ou ajoute une couche en faisant glisser des éléments sur le diagramme de couche à partir de l'Explorateur de solutions ou du Navigateur de l'architecture, il crée des artefacts. Il est possible de lier n'importe quel nombre de références d'artefact à une couche.
Chaque ligne dans l'Explorateur de couches affiche une référence d'artefact. Pour plus d'informations, consultez Comment : créer des diagrammes de couche à partir d'artefacts.
Les principaux types et méthodes concernés par les références d'artefact sont les suivants :
ILayerArtifactReference. La propriété Categories indique quel type d'artefact est référencé, tel qu'une classe, un fichier exécutable ou un assembly. Elle détermine comment l'identificateur identifie l'artefact cible.
CreateArtifactReferenceAsync() crée une référence d'artefact à partir d'un Project ou ProjectItem. Il s'agit d'une opération asynchrone. Par conséquent, vous fournissez habituellement un rappel appelé lorsque la création est terminée.
Les références d'artefact de couche ne doivent pas être confondues avec les artefacts dans les diagrammes de cas d'usage.
Formes et diagrammes
Deux objets sont utilisés pour représenter chaque élément dans un modèle de couche : ILayerElement et IShape. IShape représente la position et la taille de la forme sur le diagramme. Dans les modèles de couche, chaque ILayerElement a une IShape, et chaque IShape sur un diagramme de couche a un ILayerElement. IShape est également utilisée pour les modèles UML. Par conséquent, toutes les IShape n'ont pas un élément de couche.
De la même manière, le ILayerModel est affiché sur un IDiagram.
Dans le code d'un gestionnaire de mouvements ou de commandes personnalisé, vous pouvez obtenir le diagramme en cours et la sélection actuelle de formes à partir de l'importation 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 et IDiagram sont également utilisés pour afficher des modèles UML. Pour plus d'informations, consultez Comment : afficher un modèle sur des diagrammes.
Voir aussi
Référence
Concepts
Diagrammes de couche : référence
Autres ressources
Ajout de commandes et de mouvements aux diagrammes de couche
Ajout d'une validation d'architecture personnalisée aux diagrammes de couche
Ajout de propriétés personnalisées à un diagramme de couche
Extension de modèles et de diagrammes UML
Historique des modifications
Date |
Historique |
Motif |
---|---|---|
Avril 2011 |
Ajout d'informations sur l'accès aux commentaires et aux propriétés. |
Améliorations apportées aux informations. |