public static PropertyReference ConvertTransformPropertyToComposite(PropertyReference propertyReference) { if (propertyReference == null) { return((PropertyReference)null); } int num = -1; for (int index = 0; index < propertyReference.Count; ++index) { if (PlatformTypes.Transform.IsAssignableFrom((ITypeId)propertyReference[index].PropertyType)) { num = index; break; } } if (num == -1) { return((PropertyReference)null); } ReferenceStep compositeProperty = TransformPropertyLookup.GetCorrespondingCompositeProperty(propertyReference); if (compositeProperty == null) { return((PropertyReference)null); } ReferenceStep[] steps = new ReferenceStep[num + 2]; for (int index = 0; index <= num; ++index) { steps[index] = propertyReference.ReferenceSteps[index]; } steps[num + 1] = compositeProperty; return(PropertyReference.CreateNewPropertyReferenceFromStepsWithoutCopy(steps)); }
private static PropertyReference UpdatePropertyReference(PropertyReference propertyReference, ReferenceStep referenceStep, ReferenceStep filteredStep) { if (filteredStep == null) { return((PropertyReference)null); } if (filteredStep != referenceStep && PlatformTypeHelper.GetPropertyType((IProperty)filteredStep).IsAssignableFrom(PlatformTypeHelper.GetPropertyType((IProperty)referenceStep))) { ReferenceStep[] steps = new ReferenceStep[propertyReference.Count]; steps[0] = filteredStep; for (int index = 1; index < propertyReference.Count; ++index) { steps[index] = propertyReference[index]; } propertyReference = PropertyReference.CreateNewPropertyReferenceFromStepsWithoutCopy(steps); } return(propertyReference); }