DepthFirstElementAndLinkWalker Sınıf

Tanım

Belirli bir öğeden veya öğe grubundan başlayarak modelin derinlik ilk traversals etkinleştirme sınıfı. Öğelerin ve öğe bağlantılarının araya eklemeli bir biçimde ziyaret edildiğini garanti eder. Örneğin: A | B (bağlantı) C | D (bağlantı) E sırayla ziyaret edilecek: A, B, C, D, E, ıncludelinks = true varsayılıyor. DepthFirstElementWalker sınıfının öğeler için yalnızca derinlemesine bir deneme garantisi verdiğini unutmayın. bu nedenle, A, C, E öğelerini içeren tüm çapraz düzen geçerli olur.

public ref class DepthFirstElementAndLinkWalker : Microsoft::VisualStudio::Modeling::DepthFirstElementWalker
public class DepthFirstElementAndLinkWalker : Microsoft.VisualStudio.Modeling.DepthFirstElementWalker
type DepthFirstElementAndLinkWalker = class
    inherit DepthFirstElementWalker
Public Class DepthFirstElementAndLinkWalker
Inherits DepthFirstElementWalker
Devralma
DepthFirstElementAndLinkWalker

Oluşturucular

DepthFirstElementAndLinkWalker(IElementVisitor, IElementVisitorFilter)

ElementVisitor alan Oluşturucu. Bu varsayılan olarak, bir öğe bağlantısı olmadan grafiğin derinlemesine ilk çapraz geçiş, ön sıra kopyası olur.

DepthFirstElementAndLinkWalker(IElementVisitor, IElementVisitorFilter, Boolean)

ElementVisitor alan Oluşturucu.

Özellikler

BypassDemandLoading

Geçiş sırasında, geçiş sırasında istek yüklemeyi atlamaya izin verir

(Devralındığı yer: ElementWalker)
Filter

Geçiş sırasında kullanılmak üzere IElementVisitorFilter 'ı Al veya ayarla

(Devralındığı yer: ElementWalker)
IncludeLinks

Denetçisi ziyaretçi işlevine yapılan çağrılardaki öğe bağlantılarını içeriyorsa true döndürür

(Devralındığı yer: ElementWalker)
InternalElementList

Ziyaret edilecek öğelerin iç listesini al

(Devralındığı yer: ElementWalker)
Store

Ziyaret edilecek öğelerin iç listesini al

(Devralındığı yer: ElementWalker)
Visitor

Geçiş sırasında kullanılmak üzere IElementVisitor 'ı Al veya ayarla

(Devralındığı yer: ElementWalker)

Yöntemler

BeginTraverseElement(ModelElement)

Sanal yöntem, denetçisi verilen öğeye geçiş yapmak üzere olduğunu belirtir

(Devralındığı yer: DepthFirstElementWalker)
DoTraverse(ModelElement)

Belirtilen başlangıç öğesinden başlayarak modeli gez.

(Devralındığı yer: DepthFirstElementWalker)
EndTraverseElement(ModelElement)

Sanal yöntem, belirtilen öğeye geçiş sırasında denetçisi yapıldığını belirtir

(Devralındığı yer: DepthFirstElementWalker)
GetRelatedElements(ModelElement)

İlgili öğelerin listesini al

MarkForRemovalFromInternalElementList(ModelElement)

InternalElementList öğesinden kaldırmak için bir öğe işaretleyin. Dizinleri geçerli kalacak şekilde ilk olarak işaretliyoruz ve daha sonra sona daha sonra kaldırdık. Öğeleri ziyaret edildiğinde, Hashtable 'da öğenin ziyaret edildiğini bildiren bir dizin depoluyoruz. Öğeler bu sırada InternalElementList içine yerleştirilmiş ise, dizini kullanarak öğeyi kolayca bulabiliriz. Bir doğrusal arama yoksa, öğeyi bulmak için kullanılacaktır.

(Devralındığı yer: ElementWalker)
MarkVisited(ModelElement)

Bir öğeyi önceden ziyaret edilmiş olarak işaretleme

(Devralındığı yer: ElementWalker)
RemoveMarkedElements()

Kaldırma için işaretlenen öğeleri kaldırır. Alreadyınalındaki dizinlerin geçerli kalması için bunu çapraz geçişinin sonunda çağırın.

(Devralındığı yer: ElementWalker)
Reset()

Yeniden geçiş başlatabilmesi için ziyaretçisini sıfırlayın. Bu, önceden ziyaret edilen öğelerin iç listesini temizlemek için gereklidir.

(Devralındığı yer: ElementWalker)
ShouldVisitLinkAgain(ElementLink, ModelElement)

Verilen currentElement 'ın ilgili öğelerine bakarken, ziyaret için sıraya alınmış bir bağlantı buluyorsa, bu işlev yeniden ziyaret edilip edilmediğimiz hakkında bilgi sağlayacaktır. Bu, bağlantı currentElement (roleoynatıcılarından biri) ziyaret edilene kadar ziyaret edildiğinde olur.

Kapanış walranları için, bağlantının yalnızca roleoyuncular ziyaret edildikten sonra ziyaret edeceğini garanti ediyoruz (Teknik olarak, InternalElementList ' nin roleoyunculardan sonra bağlantıyı içermesini güvence altına alırsınız). Bu senaryoyu göz önünde bulundurun: 2 ilişkiler için bir rolündeki RolePlayer olan A öğesidir ve AHasBs ve CHasAs. Kapanış çapraz geçişi sırasında, ilk olarak B 'den AHasBs üzerinden approached. Ancak, üzerinde Prop-Delete yok, bu nedenle ziyaret edilmez, ancak AHasBs ziyaret edilir. Çapraz geçiş sonrasında, bir approached, CHasAs aracılığıyla C 'dir. Bu kez, bir, Prop-Delete içerdiğinden ziyaret edilir. Şimdi AHasBs 'nin bir roleoyuncularından (A) daha önce ziyaret edildiği bir durum alırız. Bu işlemi onarmak için, waltmalar bir bağlantının ziyaret edildiğini (veya ziyaret için sıraya alınmış olduğunu) bulamazsa, yeniden ziyaret edilip edilmemelidir (yani Geçerlitelement 'tan önce zaten ziyaret edilip ediltiğine bakın). Bu durumda, Markforremovalfrominternatalementlist ve Removemenkul ler yöntemlerini kullanarak InternalElementList bağlantısını kaldırması ve yeniden ziyaret edilecek sıraya eklemesi gerekir.

(Devralındığı yer: ElementWalker)
Traverse(ICollection<ModelElement>)

Belirtilen başlangıç öğelerinden başlayarak modeli çapraz geçiş yapın.

(Devralındığı yer: ElementWalker)
Traverse(ModelElement)

Belirtilen başlangıç öğesinden başlayarak modeli gez.

(Devralındığı yer: ElementWalker)
Visited(ModelElement)

verilen öğenin ziyaret edilip edilmeyeceğini belirler

(Devralındığı yer: ElementWalker)

Şunlara uygulanır