コード例 #1
0
        public virtual void Visit(ObjectVisitor visitor)
        {
            if (o == null || o.GetType().Equals(typeof (object))) return;
            Markable markable = o as Markable;
            if (markable != null && markable.IsProcessed)
                return;
            if (markable != null)
                markable.IsProcessed = true;
            @class.EachField(delegate(FieldInfo fieldInfo)
                                 {
                                     var reflectedObject = new ReflectedObject(fieldInfo.GetValue(o), leafRegister);
                                     if (TreatAsPrimitive(fieldInfo.FieldType) || leafRegister.IsIgnored(fieldInfo.FieldType))
                                         visitor.Accept(reflectedObject);
                                     else
                                         reflectedObject.Visit(visitor);
                                 });

            visitor.Accept(this);
        }