BreadthFirstRolePlayerFirstElementWalker Classe

Definição

Classe para habilitar a amplitude das primeiras passagens do modelo, começando por um determinado elemento ou grupo de elementos. Essa Walker também garante que roleplayers de relações sejam visitadas primeiro antes que a relação seja visitada.

public ref class BreadthFirstRolePlayerFirstElementWalker : Microsoft::VisualStudio::Modeling::ElementWalker
public class BreadthFirstRolePlayerFirstElementWalker : Microsoft.VisualStudio.Modeling.ElementWalker
type BreadthFirstRolePlayerFirstElementWalker = class
    inherit ElementWalker
Public Class BreadthFirstRolePlayerFirstElementWalker
Inherits ElementWalker
Herança
BreadthFirstRolePlayerFirstElementWalker
Derivado

Construtores

BreadthFirstRolePlayerFirstElementWalker(IElementVisitor, IElementVisitorFilter)

Construtor que usa um ElementVisitor. Esse padrão é a profundidade da primeira passagem, visitation de ordem do grafo sem nenhum link de elemento.

BreadthFirstRolePlayerFirstElementWalker(IElementVisitor, IElementVisitorFilter, Boolean, Boolean)

Construtor que usa um ElementVisitor.

Propriedades

BypassDemandLoading

Permite que o Walker ignore o carregamento de demanda durante a passagem

(Herdado de ElementWalker)
Filter

Obter ou definir o IElementVisitorFilter para uso durante a passagem

(Herdado de ElementWalker)
IncludeLinks

Retornará true se o Walker incluir links de elementos em chamadas para a função de visitante

(Herdado de ElementWalker)
InternalElementList

Obter a lista interna de elementos que serão visitados

(Herdado de ElementWalker)
Store

Obter a lista interna de elementos que serão visitados

(Herdado de ElementWalker)
Visitor

Obter ou definir o IElementVisitor para uso durante a passagem

(Herdado de ElementWalker)

Métodos

DoTraverse(ModelElement)

Percorrer o modelo começando no elemento inicial especificado.

MarkForRemovalFromInternalElementList(ModelElement)

Marque um elemento para remoção do InternalElementList. Marcamos primeiro e removemos posteriormente no final para que os índices permaneçam válidos. Ao marcar elementos como visitados, armazenamos um índice na tabela de hash, que nos informa a ordem em que o elemento foi visitado. Se os elementos foram colocados em InternalElementList nessa ordem, podemos encontrar o elemento facilmente usando o índice. Se não for, uma pesquisa linear será usada para localizar o elemento.

(Herdado de ElementWalker)
MarkVisited(ModelElement)

Marcar um elemento como já visitado

(Herdado de ElementWalker)
RemoveMarkedElements()

Remove os elementos marcados para remoção. Chame isso no final da passagem para que os índices em alreadyVisited permaneçam válidos.

(Herdado de ElementWalker)
Reset()

Redefina o visitante para que ele possa começar a percorrer novamente. Isso é necessário para limpar a lista interna de elementos visitados anteriormente.

(Herdado de ElementWalker)
ShouldVisitLinkAgain(ElementLink, ModelElement)

Ao examinar os elementos relacionados do currentElement fornecido, se encontrarmos um link que foi enfileirado para ser visitado, essa função informará se ele precisa ser visitado novamente. Isso ocorrerá se o link tiver sido visitado antes que o currentElement (um de seus roleplayers) tenha sido visitado.

Para os apresentadores de fechamento, garantimos que o link será visitado somente depois que os roleplayers forem visitados (tecnicamente, garantimos que o InternalElementList conterá o link após o roleplayers). Considere este cenário: temos um elemento que é um roleplayer para 2 relações AHasBs e CHasAs. Durante o percurso de fechamento, A é uma primeira abordagem de B a AHasBs. No entanto, ele não tem prop-Delete, portanto ele não é visitado, mas o AHasBs é visitado. Posteriormente, na passagem, um é abordado de C por meio de CHasAs. Desta vez, um é visitado porque tem prop-Delete. Agora, obtemos um caso em que o AHasBs foi visitado antes que um de seus roleplayers (A) fosse visitado. Para corrigir isso, se os orientadores descobrirem que um link foi visitado (ou, em vez disso, enfileirado para a visita), ele deverá verificar se ele deve ser visitado novamente (verifique se já foi visitado antes de currentElement). Nesse caso, ele deve remover o link do InternalElementList usando os métodos MarkForRemovalFromInternalElementList e RemoveMarkedElements e adicioná-lo à fila para ser visitado novamente.

(Herdado de ElementWalker)
Traverse(ICollection<ModelElement>)

Atravessa o modelo começando nos elementos iniciais especificados.

(Herdado de ElementWalker)
Traverse(ModelElement)

Percorrer o modelo começando no elemento inicial especificado.

(Herdado de ElementWalker)
Visited(ModelElement)

Determina se o elemento fornecido foi visitado ou não

(Herdado de ElementWalker)

Aplica-se a