BreadthFirstRolePlayerFirstElementWalker Класс

Определение

Класс для реализации первых обходов модели, начиная с определенного элемента или группы элементов. Этот обход также гарантирует, что ролеплайерс связи будут посещены первыми до того, как будет посещена связь.

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
Наследование
BreadthFirstRolePlayerFirstElementWalker
Производный

Конструкторы

BreadthFirstRolePlayerFirstElementWalker(IElementVisitor, IElementVisitorFilter)

Конструктор, принимающий ElementVisitor. По умолчанию используется обход с приоритетом глубины и посещение в заданном порядке диаграммы без связей элементов.

BreadthFirstRolePlayerFirstElementWalker(IElementVisitor, IElementVisitorFilter, Boolean, Boolean)

Конструктор, принимающий ElementVisitor.

Свойства

BypassDemandLoading

Позволяет обходчику обходить требование загрузки при проходе

(Унаследовано от ElementWalker)
Filter

Получите или задайте IElementVisitorFilter для использования во время обхода

(Унаследовано от ElementWalker)
IncludeLinks

Возвращает значение true, если средство обхода включает ссылки на элементы в вызовах функции посетителя

(Унаследовано от ElementWalker)
InternalElementList

Получает внутренний список элементов, которые будут посещены

(Унаследовано от ElementWalker)
Store

Получает внутренний список элементов, которые будут посещены

(Унаследовано от ElementWalker)
Visitor

Получите или задайте IElementVisitor для использования во время обхода

(Унаследовано от ElementWalker)

Методы

DoTraverse(ModelElement)

Осуществляет обход модели, начиная с указанного начального элемента.

MarkForRemovalFromInternalElementList(ModelElement)

Помечает элемент для удаления из InternalElementList. Сначала выполняется маркирование, а затем удаление, чтобы индексы оставались действительными. При маркировании элементов как посещенных в хэш-таблице сохраняется индекс, указывающий порядок, в котором был посещен элемент. Если элементы были помещены в InternalElementList в этом порядке, элемент легко найти по индексу. Если нет, для поиска элемента будет использоваться линейный поиск.

(Унаследовано от ElementWalker)
MarkVisited(ModelElement)

Помечает элемент как уже посещенный

(Унаследовано от ElementWalker)
RemoveMarkedElements()

Удаляет элементы, которые помечены для удаления. Вызовите это в конце обхода, чтобы индексы в alreadyVisited будут оставаться допустимыми.

(Унаследовано от ElementWalker)
Reset()

Сброс посетителя, чтобы он мог начать обход заново. Это необходимо для очистки внутреннего списка ранее посещенных элементов.

(Унаследовано от ElementWalker)
ShouldVisitLinkAgain(ElementLink, ModelElement)

При просмотре связанных элементов заданного Куррентелемент, если мы нашли ссылку, которая была поставлена в очередь для посещения, эта функция сообщит вам, нужно ли снова ее посетить. Это происходит, если ссылка была посещена до того, как была посещена Куррентелемент (одна из ее ролеплайерс).

Для последовательностей замыканий мы гарантируем, что ссылка будет посещена только после посещения ролеплайерс (технически, мы гарантируем, что Интерналелементлист будет содержать ссылку после ролеплайерс). Рассмотрим этот сценарий: у нас есть элемент A, который является RolePlayer для 2 отношений Ахасбс и Часас. Во время обхода замыкания объект сначала приближается к B через Ахасбс. Однако у него нет свойства Prop-DELETE, поэтому он не будет посещен, но Ахасбс будет посещен. В дальнейшем в процессе обхода, с помощью Часас будет подход. На этот раз будет посещен, так как у него есть Prop-DELETE. Теперь мы получаем случай, когда Ахасбс был посещен до того, как была посещена одна из ролеплайерс (A). Чтобы устранить эту проблему, если пошаговые руководства покажут, что ссылка была открыта (или была поставлена в очередь для посещения), она должна проверить, было ли оно Просмотрено повторно (проверьте, было ли оно уже посещено до Куррентелемент). В этом случае необходимо удалить ссылку из Интерналелементлист, используя методы Маркфорремовалфроминтерналелементлист и Ремовемаркеделементс, и добавить ее в очередь для повторного посещения.

(Унаследовано от ElementWalker)
Traverse(ICollection<ModelElement>)

Осуществляет обход модели, начиная с указанных начальных элементов.

(Унаследовано от ElementWalker)
Traverse(ModelElement)

Осуществляет обход модели, начиная с указанного начального элемента.

(Унаследовано от ElementWalker)
Visited(ModelElement)

определяет, посещался ли данный элемент

(Унаследовано от ElementWalker)

Применяется к