public override void Execute() { if (!StateCommuter.Current.IsGetObject) { StateCommuter.CreateInstanceOfCurrentXamlTypeIfNotCreatedBefore(); StateCommuter.PutNameToCurrentInstanceIfAny(); var instance = StateCommuter.Current.Instance; if (instance is IMarkupExtension) { ProcessCurrentInstanceValueWithMarkupExtension(); } else if (!StateCommuter.WasAssociatedRightAfterCreation) { StateCommuter.AssociateCurrentInstanceToParent(); } StateCommuter.RegisterInstanceNameToNamescope(); lifyCycleListener.OnAfterProperties(instance); lifyCycleListener.OnEnd(instance); } setResult(StateCommuter); StateCommuter.DecreaseLevel(); }
public override void Execute() { if (!StateCommuter.Current.IsGetObject) { StateCommuter.CreateInstanceOfCurrentXamlTypeIfNotCreatedBefore(); if (StateCommuter.Current.Instance is IMarkupExtension) { object val = StateCommuter.GetValueProvidedByMarkupExtension((IMarkupExtension)StateCommuter.Current.Instance); StateCommuter tempQualifier = StateCommuter; tempQualifier.Current.Instance = val; var collection = val as ICollection; if (collection != null) { tempQualifier.Current.Collection = collection; } StateCommuter.AssociateCurrentInstanceToParent(); } else if (!StateCommuter.Current.WasInstanceAssignedRightAfterBeingCreated) { StateCommuter.AssociateCurrentInstanceToParent(); } } Assembler.Result = StateCommuter.Current.Instance; StateCommuter.DecreaseLevel(); }
public override void Execute() { if (StateCommuter.ValueProcessingMode == ValueProcessingMode.ConstructionParameter) { AdaptCurrentCtorArgumentsToCurrentType(); StateCommuter.ValueProcessingMode = ValueProcessingMode.AssignToMember; } if (IsTherePendingInstanceWaitingToBeAssigned) { StateCommuter.AssociateCurrentInstanceToParent(); StateCommuter.DecreaseLevel(); } }
private void ProcessCurrentInstanceValueWithMarkupExtension() { var processedValue = StateCommuter.GetValueProvidedByMarkupExtension((IMarkupExtension)StateCommuter.Current.Instance); StateCommuter.Current.Instance = processedValue; var collection = processedValue as ICollection; if (collection != null) { StateCommuter.Current.Collection = collection; } StateCommuter.AssociateCurrentInstanceToParent(); }
public override void Execute() { switch (StateCommuter.ValueProcessingMode) { case ValueProcessingMode.InitializationValue: object compatibleValue; CommonValueConversion.TryConvert(value, StateCommuter.Current.XamlType, valueContext, out compatibleValue); StateCommuter.Current.Instance = compatibleValue; StateCommuter.ValueProcessingMode = ValueProcessingMode.AssignToMember; break; case ValueProcessingMode.Key: StateCommuter.SetKey(value); StateCommuter.ValueProcessingMode = ValueProcessingMode.AssignToMember; break; case ValueProcessingMode.ConstructionParameter: StateCommuter.AddCtorArgument(value); break; case ValueProcessingMode.AssignToMember: StateCommuter.RaiseLevel(); StateCommuter.Current.Instance = value; StateCommuter.AssociateCurrentInstanceToParent(); StateCommuter.DecreaseLevel(); break; case ValueProcessingMode.Name: StateCommuter.SetNameForCurrentInstance(value); StateCommuter.ValueProcessingMode = ValueProcessingMode.AssignToMember; break; default: throw new ParseException( "Unexpected mode was set trying to process a Value XAML instruction. " + $"We found \"{StateCommuter.ValueProcessingMode}\") and it cannot be handled."); } }