public override void Accept(ref TContainer container, IPropertyVisitor visitor) { var value = GetValue(ref container); var context = new VisitContext <TValue> { Property = this, Value = value, Index = -1 }; if (false == visitor.ExcludeVisit(ref container, context)) { if (visitor.BeginContainer(ref container, context)) { PropertyContainer.Visit(ref container, visitor); } visitor.EndContainer(ref container, context); } }
public override void Accept(ref TContainer container, IPropertyVisitor visitor) { m_GetValueRef((StructValueStructProperty <TContainer, TValue> p, ref TContainer c, ref TValue value, IPropertyVisitor v) => { var context = new VisitContext <TValue> { Property = p, Value = value, Index = -1 }; if (v.ExcludeOrCustomVisit(ref c, context)) { return; } if (v.BeginContainer(ref c, context)) { PropertyContainer.Visit(ref value, v); } v.EndContainer(ref c, context); }, this, ref container, visitor); }
public override void Accept(ref TContainer container, IPropertyVisitor visitor) { var value = GetValue(ref container); if (false == visitor.ExcludeVisit(ref container, new VisitContext <TValue> { Property = this, Value = value, Index = -1 })) { var listContext = new VisitContext <TValue> { Property = this, Value = value, Index = -1 }; if (visitor.BeginList(ref container, listContext)) { var itemVisitContext = new VisitContext <TItem> { Property = this }; var count = Count(ref container); for (var i = 0; i < count; i++) { var item = GetItemAt(ref container, i); itemVisitContext.Value = item; itemVisitContext.Index = i; if (false == visitor.ExcludeVisit(ref container, itemVisitContext)) { if (visitor.BeginContainer(ref container, itemVisitContext)) { PropertyContainer.Visit(ref item, visitor); } visitor.EndContainer(ref container, itemVisitContext); } } } visitor.EndList(ref container, listContext); } }
public override void Accept(ref TContainer container, IPropertyVisitor visitor) { var listContext = new VisitContext <IList <TItem> > { Property = this, Index = -1, Value = GetList(ref container) }; if (visitor.ExcludeOrCustomVisit(ref container, listContext)) { return; } if (visitor.BeginCollection(ref container, listContext)) { var itemVisitContext = new VisitContext <TItem> { Property = this }; var count = Count(container); for (var i = 0; i < count; i++) { var item = GetAt(ref container, i); itemVisitContext.Value = item; itemVisitContext.Index = i; if (visitor.ExcludeOrCustomVisit(ref container, itemVisitContext)) { continue; } if (visitor.BeginContainer(ref container, itemVisitContext)) { PropertyContainer.Visit(ref item, visitor); } visitor.EndContainer(ref container, itemVisitContext); } } visitor.EndCollection(ref container, listContext); }
internal VisitStatus TryVisitContainerWithAdapters <TProperty, TContainer, TValue>(TProperty property, ref TContainer container, ref TValue value, ref ChangeTracker changeTracker) where TProperty : IProperty <TContainer, TValue> { VisitStatus status; if (null != m_Adapters) { for (var i = 0; i < m_Adapters.Count; i++) { if ((status = m_Adapters[i].TryVisitContainer(this, property, ref container, ref value, ref changeTracker)) != VisitStatus.Unhandled) { return(status); } } } if ((status = BeginContainer(property, ref container, ref value, ref changeTracker)) == VisitStatus.Handled) { PropertyContainer.Visit(ref value, this, ref changeTracker); EndContainer(property, ref container, ref value, ref changeTracker); } return(status); }
private static void RefVisit(ref TValue value, IPropertyVisitor visitor) { PropertyContainer.Visit(ref value, visitor); }