Esempio n. 1
0
        bool AdvanceToProperty(string propertyName, int index = -1)
        {
            var  member = ReflectionHelper.GetProperty(objectValue.GetType(), propertyName);
            bool result = ShouldAdvance(member);

            if (result)
            {
                var instruction = new WalkerInstruction()
                {
                    Object      = objectValue,
                    Property    = member,
                    Field       = null,
                    ReadMethod  = ReadPropertyValue,
                    WriteMethod = WritePropertyValue,
                    Index       = index
                };

                instructions.AddLast(instruction);

                UpdateValue();

                if (instruction.Index >= 0 && instruction.Property.GetIndexParameters().Length == 0)
                {
                    AdvanceToProperty("Item", index);
                }
            }
            return(result);
        }
Esempio n. 2
0
        bool AdvanceToField(string fieldName, int index = -1)
        {
            var  member = ReflectionHelper.GetField(objectValue.GetType(), fieldName);
            bool result = ShouldAdvance(member);

            if (result)
            {
                var instruction = new WalkerInstruction()
                {
                    Object      = objectValue,
                    Property    = null,
                    Field       = member,
                    ReadMethod  = ReadFieldValue,
                    WriteMethod = WriteFieldValue,
                    Index       = index
                };

                instructions.AddLast(instruction);

                UpdateValue();
            }
            return(result);
        }