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); }
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); }