ElementWalker Classe

Definição

Classe para habilitar várias passagens do modelo a partir de um determinado elemento.

public ref class ElementWalker abstract
public abstract class ElementWalker
type ElementWalker = class
Public MustInherit Class ElementWalker
Herança
ElementWalker
Derivado

Construtores

ElementWalker(IElementVisitor, IElementVisitorFilter)

Construtor que usa um ElementVisitor.

ElementWalker(IElementVisitor, IElementVisitorFilter, Boolean)

Construtor que usa um ElementVisitor.

Propriedades

BypassDemandLoading

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

Filter

Obter ou definir o IElementVisitorFilter para uso durante a passagem

IncludeLinks

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

InternalElementList

Obter a lista interna de elementos que serão visitados

Store

Obter a lista interna de elementos que serão visitados

Visitor

Obter ou definir o IElementVisitor para uso durante a passagem

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.

MarkVisited(ModelElement)

Marcar um elemento como já visitado

RemoveMarkedElements()

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

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.

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.

Traverse(ICollection<ModelElement>)

Atravessa o modelo começando nos elementos iniciais especificados.

Traverse(ModelElement)

Percorrer o modelo começando no elemento inicial especificado.

Visited(ModelElement)

Determina se o elemento fornecido foi visitado ou não

Aplica-se a