Example #1
0
        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);
            }
        }
Example #2
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
 private static void RefVisit(ref TValue value, IPropertyVisitor visitor)
 {
     PropertyContainer.Visit(ref value, visitor);
 }