ElementWalker Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 |