public override string ReadMemberName(ref ObjectContext objectContext, string memberName) { var newMemberName = memberName.Trim(PostFixSealed, PostFixNew); if (newMemberName.Length != memberName.Length) { var overrideType = OverrideType.Base; if (memberName.Contains(PostFixNewSealed) || memberName.EndsWith(PostFixNewSealedAlt)) { overrideType = OverrideType.New | OverrideType.Sealed; } else if (memberName.EndsWith(PostFixNew)) { overrideType = OverrideType.New; } else if (memberName.EndsWith(PostFixSealed)) { overrideType = OverrideType.Sealed; } if (overrideType != OverrideType.Base) { var objectType = objectContext.Instance.GetType(); if (cachedDescriptor == null || cachedDescriptor.Type != objectType) { cachedDescriptor = typeDescriptorFactory.Find(objectType); } var memberDescriptor = cachedDescriptor[newMemberName]; objectContext.Instance.SetOverride(memberDescriptor, overrideType); } } return(base.ReadMemberName(ref objectContext, newMemberName)); }
public override string ReadMemberName(ref ObjectContext objectContext, string memberName, out bool skipMember) { var newMemberName = memberName.Trim(Override.PostFixSealed, Override.PostFixNew); var objectType = objectContext.Instance.GetType(); if (newMemberName.Length != memberName.Length) { var overrideType = OverrideType.Base; if (memberName.Contains(Override.PostFixNewSealed) || memberName.EndsWith(Override.PostFixNewSealedAlt)) { overrideType = OverrideType.New | OverrideType.Sealed; } else if (memberName.EndsWith(Override.PostFixNew)) { overrideType = OverrideType.New; } else if (memberName.EndsWith(Override.PostFixSealed)) { overrideType = OverrideType.Sealed; } if (overrideType != OverrideType.Base) { if (cachedDescriptor == null || cachedDescriptor.Type != objectType) { cachedDescriptor = typeDescriptorFactory.Find(objectType); } var memberDescriptor = cachedDescriptor[newMemberName]; objectContext.Instance.SetOverride(memberDescriptor, overrideType); } } var resultMemberName = base.ReadMemberName(ref objectContext, newMemberName, out skipMember); // If ~Id was not found as a member, don't generate an error, as we may have switched an object // to NonIdentifiable but we don't want to write an upgrader for this if (!IdentifiableHelper.IsIdentifiable(objectType) && memberName == IdentifiableHelper.YamlSpecialId) { skipMember = true; } return(resultMemberName); }
public override string ReadMemberName(ref ObjectContext objectContext, string memberName, out bool skipMember) { var newMemberName = memberName.Trim(Override.PostFixSealed, Override.PostFixNew); var objectType = objectContext.Instance.GetType(); if (newMemberName.Length != memberName.Length) { var overrideType = OverrideType.Base; if (memberName.Contains(Override.PostFixNewSealed) || memberName.EndsWith(Override.PostFixNewSealedAlt)) { overrideType = OverrideType.New | OverrideType.Sealed; } else if (memberName.EndsWith(Override.PostFixNew)) { overrideType = OverrideType.New; } else if (memberName.EndsWith(Override.PostFixSealed)) { overrideType = OverrideType.Sealed; } if (overrideType != OverrideType.Base) { if (cachedDescriptor == null || cachedDescriptor.Type != objectType) { cachedDescriptor = typeDescriptorFactory.Find(objectType); } var memberDescriptor = cachedDescriptor[newMemberName]; objectContext.Instance.SetOverride(memberDescriptor, overrideType); } } var resultMemberName = base.ReadMemberName(ref objectContext, newMemberName, out skipMember); // If ~Id was not found as a member, don't generate an error, as we may have switched an object // to NonIdentifiable but we don't want to write an upgrader for this if (!IdentifiableHelper.IsIdentifiable(objectType) && memberName == IdentifiableHelper.YamlSpecialId) { skipMember = true; } return resultMemberName; }
public override string ReadMemberName(ref ObjectContext objectContext, string memberName) { var newMemberName = memberName.Trim(PostFixSealed, PostFixNew); if (newMemberName.Length != memberName.Length) { var overrideType = OverrideType.Base; if (memberName.Contains(PostFixNewSealed) || memberName.EndsWith(PostFixNewSealedAlt)) { overrideType = OverrideType.New | OverrideType.Sealed; } else if (memberName.EndsWith(PostFixNew)) { overrideType = OverrideType.New; } else if (memberName.EndsWith(PostFixSealed)) { overrideType = OverrideType.Sealed; } if (overrideType != OverrideType.Base) { // With keepOnlySealedOverrides, we can serialize only Base or Base+Sealed if (keepOnlySealedOverrides && overrideType.IsSealed()) { overrideType = OverrideType.Base | OverrideType.Sealed; } var objectType = objectContext.Instance.GetType(); if (cachedDescriptor == null || cachedDescriptor.Type != objectType) { cachedDescriptor = typeDescriptorFactory.Find(objectType); } var memberDescriptor = cachedDescriptor[newMemberName]; objectContext.Instance.SetOverride(memberDescriptor, overrideType); } } return base.ReadMemberName(ref objectContext, newMemberName); }