protected override void VisitSet <TContainer, TSet, TValue>(Property <TContainer, TSet> property, ref TContainer container, ref TSet value) { AddToPath(property); try { var path = GetCurrentPath(); using (var references = VisitorContext.MakeVisitedReferencesScope(this, ref value, path)) { if (references.VisitedOnCurrentBranch) { VisitorContext.Parent.Add(new CircularReferenceElement <TSet>(VisitorContext.Root, property, value, path, references.GetReferencePath())); return; } var element = GuiFactory.SetFoldout <TContainer, TSet, TValue>(property, path, VisitorContext); VisitorContext.Parent.contentContainer.Add(element); using (VisitorContext.MakeParentScope(element)) { element.Reload(property); } } } finally { RemoveFromPath(property); } }
void ISetPropertyVisitor.Visit <TContainer, TSet, TValue>( Property <TContainer, TSet> property, ref TContainer container, ref TSet set) { var path = Context.CopyCurrentPath(); var foldout = GuiFactory.SetFoldout <TSet, TValue>(property, path, Context); using (Context.MakeParentScope(foldout)) foldout.Reload(property); }
void DefaultSetVisit <TSet, TValue>(IProperty property, ref TSet value, PropertyPath path) where TSet : ISet <TValue> { var element = GuiFactory.SetFoldout <TSet, TValue>(property, path, VisitorContext); VisitorContext.Parent.contentContainer.Add(element); using (VisitorContext.MakeParentScope(element)) { element.Reload(property); } }