Compartir a través de


Navegar y actualizar modelos de capas en el código del programa

Este Feature Pack de Visual Studio 2010 le permite navegar y actualizar los modelos de capas en Visual Studio 2010 Ultimate mediante el código de programa. En este tema se describen los elementos y relaciones de los modelos de capas.

Para obtener más información sobre los diagramas de capas desde el punto de vista del usuario, vea Diagramas de capas: Referencia y Diagrama de capas: Instrucciones. Para obtener más información, vea Paquetes de características de Visual Studio.

Transacciones

Al actualizar un modelo, considere la posibilidad de agregar los cambios en una interfaz ILinkedUndoTransaction. Esto agrupa los cambios en una sola transacción. Si cualquiera de los cambios produce un error, se revertirá toda la transacción. Si el usuario deshace un cambio, se desharán todos los cambios juntos.

Para obtener más información, vea Cómo: Vincular actualizaciones del modelo mediante transacciones.

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

Almacenamiento

Tanto ILayer como ILayerModel pueden contener ILayers.

Las capas (ILayer) y el modelo de capas (ILayerModel) pueden contener comentarios y capas.

Una capa (ILayer) puede estar incluida en un modelo de capas (ILayerModel) o puede estar anidada en otra ILayer.

Para crear un comentario o una capa, use los métodos de creación en el contenedor adecuado.

Vínculos de dependencia

Un objeto representa un vínculo de dependencia. Se puede navegar en cualquier dirección:

Un objeto ILayerDependencyLink conecta dos ILayers.

Para crear un vínculo de dependencia, llame a source.CreateDependencyLink(target).

Comentarios

Los comentarios se pueden incluir en las capas o en el modelo de capas, y también se pueden vincular a cualquier elemento de capa:

Se pueden adjuntar comentarios a cualquier elemento de capa.

Un comentario se puede vincular a cualquier número de elementos, incluso a ninguno.

Para obtener los comentarios adjuntos a un elemento de capa, use:

ILayerModel model = diagram.GetLayerModel(); 
IEnumerable<ILayerComment> comments = 
   model.Comments.Where(comment => 
      comment.Links.Any(link => link.Target == layerElement));
Nota de precauciónPrecaución

La propiedad Comments de una interfaz ILayer obtiene los comentarios incluidos en ILayer. No obtiene los comentarios vinculados a ella.

Cree un comentario invocando CreateComment() en el contenedor adecuado.

Cree un vínculo utilizando CreateLink() en el comentario.

Elementos de capa

Todos los tipos de elemento que se pueden incluir en un modelo son los elementos de capa:

Lo que contiene el diagrama de capas son ILayerElements.

Propiedades

Cada ILayerElement contiene un diccionario de cadenas denominado Properties. Puede usar este diccionario para adjuntar información arbitraria a cualquier elemento de capa.

Referencias de artefacto

Una referencia de artefacto (ILayerArtifactReference) representa el vínculo entre una capa y un elemento de proyecto como un archivo, clase o carpeta. Cuando el usuario crea o agrega un elemento a una capa arrastrando los elementos al diagrama de capas en el Explorador de soluciones o el Explorador de arquitectura, está creando artefactos. Se puede vincular cualquier número de referencia de artefacto a una capa.

Cada fila del Explorador de capas muestra una referencia de artefacto. Para obtener más información, vea Cómo: Crear diagramas de capas desde artefactos.

Los principales tipos y métodos a los que afectan las referencias de artefacto son los siguientes:

ILayerArtifactReference. La propiedad Categories (Categorías) indica a qué tipo de artefacto se hace referencia, como una clase, archivo ejecutable o ensamblado. Las categorías determinan cómo identifica el identificador el artefacto de destino.

CreateArtifactReferenceAsync() crea una referencia de artefacto a partir de Project o ProjectItem. Esta es una operación asincrónica. Por consiguiente, normalmente debe proporcionar una devolución de llamada a la que se llamará cuando la creación se haya completado.

Las referencias de artefacto de la capa no se deben confundir con los artefactos que se usan en los diagramas de caso.

Formas y diagramas

Para representar cada elemento de un modelo de capas se usan dos objetos: ILayerElement e IShape. IShape representa la posición y el tamaño de la forma en el diagrama. En los modelos de capas, cada ILayerElement tiene una interfaz IShape y cada IShape de un diagrama de capas tiene una interfaz ILayerElement. IShape también se usa para los modelos UML. Por consiguiente, no todas las IShape tienen un elemento de capa.

De la misma manera, ILayerModel se muestra en una interfaz IDiagram.

En el código de un controlador de comandos o gestos personalizado, puede recibir el diagrama actual y la selección actual de formas de la importación 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) ... }}

Cada ILayerElement se presenta mediante un objeto IShape.

IShape e IDiagram también se usan para mostrar los modelos de UML. Para obtener más información, vea Cómo: Mostrar un modelo en diagramas.

Vea también

Referencia

Layer Diagrams: Guidelines

Conceptos

Diagramas de capas: Referencia

Otros recursos

Agregar comandos y movimiento a diagramas de capas

Agregar validación de arquitectura personalizada a diagramas de capas

Agregar propiedades personalizadas a diagramas de capas

Ampliar modelos y diagramas UML

Historial de cambios

Fecha

Historial

Motivo

1 de abril de 2011

Información agregada sobre cómo obtener acceso a comentarios y propiedades.

Mejora de la información.