예제 #1
0
        static VisitErrorCode TrySetValueImpl <TContainer, TTargetValue>(ref TContainer container, PropertyPath propertyPath,
                                                                         int propertyPathIndex, TTargetValue value, ref ChangeTracker changeTracker)
        {
            var action = new SetValueAtPathAction <TContainer, TTargetValue>(propertyPath, propertyPathIndex, value);

            if (PropertyBagResolver.Resolve <TContainer>()
                .FindProperty(propertyPath[propertyPathIndex].Name, ref container, ref changeTracker, ref action))
            {
                return(action.ErrorCode);
            }

            if (typeof(TContainer) != container.GetType())
            {
                return(SetValueCallback <TTargetValue> .TryExecute(container, propertyPath, propertyPathIndex, value, ref changeTracker));
            }

            return(VisitErrorCode.InvalidPath);
        }