当前位置: 首页>>代码示例>>C#>>正文


C# Serialization.ObjectContext类代码示例

本文整理汇总了C#中SharpYaml.Serialization.ObjectContext的典型用法代码示例。如果您正苦于以下问题:C# ObjectContext类的具体用法?C# ObjectContext怎么用?C# ObjectContext使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


ObjectContext类属于SharpYaml.Serialization命名空间,在下文中一共展示了ObjectContext类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: ReadCollectionItem

        /// <inheritdoc/>
        protected override object ReadCollectionItem(ref ObjectContext objectContext, Type itemType)
        {
            // Save the Yaml stream, in case loading fails we can keep this representation
            var parsingEvents = new List<ParsingEvent>();
            var reader = objectContext.Reader;
            var startDepth = reader.CurrentDepth;
            do
            {
                parsingEvents.Add(reader.Expect<ParsingEvent>());
            } while (reader.CurrentDepth > startDepth);

            // Save states
            var previousReader = objectContext.SerializerContext.Reader;
            var previousAllowErrors = objectContext.SerializerContext.AllowErrors;

            objectContext.SerializerContext.Reader = new EventReader(new MemoryParser(parsingEvents));
            objectContext.SerializerContext.AllowErrors = true;

            try
            {
                return objectContext.ObjectSerializerBackend.ReadCollectionItem(ref objectContext, itemType);
            }
            catch (YamlException)
            {
                // There was a failure, let's keep this object so that it can be serialized back later
                return new UnloadableScript(parsingEvents);
            }
            finally
            {
                // Restore states
                objectContext.SerializerContext.Reader = previousReader;
                objectContext.SerializerContext.AllowErrors = previousAllowErrors;
            }
        }
开发者ID:Powerino73,项目名称:paradox,代码行数:35,代码来源:ScriptCollectionSerializer.cs

示例2: ReadMemberName

        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);
        }
开发者ID:h78hy78yhoi8j,项目名称:xenko,代码行数:34,代码来源:OverrideKeyMappingTransform.cs

示例3: WriteMemberName

        public override void WriteMemberName(ref ObjectContext objectContext, SharpYaml.Serialization.IMemberDescriptor member, string memberName)
        {
            // Replace the key with SiliconStudio.Core.Reflection IMemberDescriptor
            // Cache previous 
            if (member != null)
            {
                var customDescriptor = (IMemberDescriptor)member.Tag;
                if (customDescriptor == null)
                {
                    customDescriptor = typeDescriptorFactory.Find(objectContext.Instance.GetType())[memberName];
                    member.Tag = customDescriptor;
                }

                if (customDescriptor != null)
                {
                    var overrideType = objectContext.Instance.GetOverride(customDescriptor);
                    if (!keepOnlySealedOverrides && (overrideType & OverrideType.New) != 0)
                    {
                        memberName += PostFixNew;
                    }
                    if ((overrideType & OverrideType.Sealed) != 0)
                    {
                        memberName += PostFixSealed;
                    }
                }
            }

            base.WriteMemberName(ref objectContext, member, memberName);
        }
开发者ID:Powerino73,项目名称:paradox,代码行数:29,代码来源:OverrideKeyMappingTransform.cs

示例4: WriteScalar

 protected override void WriteScalar(ref ObjectContext objectContext, ScalarEventInfo scalar)
 {
     // TODO: if ParameterKey is written to an object, It will not serialized a tag
     scalar.Tag = null;
     scalar.IsPlainImplicit = true;
     base.WriteScalar(ref objectContext, scalar);
 }
开发者ID:releed,项目名称:paradox,代码行数:7,代码来源:PropertyKeyYamlSerializer.cs

示例5: ConvertTo

        public override string ConvertTo(ref ObjectContext objectContext)
        {
            var attachedReference = AttachedReferenceManager.GetAttachedReference(objectContext.Instance);
            if (attachedReference == null)
                throw new YamlException(string.Format("Unable to extract asset reference from object [{0}]", objectContext.Instance));

            return string.Format("{0}:{1}", attachedReference.Id, attachedReference.Url);
        }
开发者ID:h78hy78yhoi8j,项目名称:xenko,代码行数:8,代码来源:ContentReferenceSerializer.cs

示例6: WriteDictionaryItems

 protected override void WriteDictionaryItems(ref ObjectContext objectContext)
 {
     // Don't sort dictionary keys
     var savedSettings = objectContext.Settings.SortKeyForMapping;
     objectContext.Settings.SortKeyForMapping = false;
     base.WriteDictionaryItems(ref objectContext);
     objectContext.Settings.SortKeyForMapping = savedSettings;
 }
开发者ID:cg123,项目名称:xenko,代码行数:8,代码来源:ParameterKeyDictionarySerializer.cs

示例7: WriteDictionaryItem

        protected override void WriteDictionaryItem(ref ObjectContext objectContext, KeyValuePair<object, object> keyValue, KeyValuePair<Type, Type> types)
        {
            var propertyKey = (PropertyKey)keyValue.Key;
            objectContext.SerializerContext.WriteYaml(propertyKey, types.Key);

            // Deduce expected value type from PropertyKey
            objectContext.SerializerContext.WriteYaml(keyValue.Value, propertyKey.PropertyType);
        }
开发者ID:cg123,项目名称:xenko,代码行数:8,代码来源:ParameterKeyDictionarySerializer.cs

示例8: ConvertTo

        public override string ConvertTo(ref ObjectContext objectContext)
        {
            var attachedReference = AttachedReferenceManager.GetAttachedReference(objectContext.Instance);
            if (attachedReference == null)
                throw new YamlException($"Unable to extract asset reference from object [{objectContext.Instance}]");

            var referenceId = IdentifiableHelper.GetId(objectContext.Instance);
            return $"{referenceId}/{attachedReference.Id}:{attachedReference.Url}";
        }
开发者ID:cg123,项目名称:xenko,代码行数:9,代码来源:ContentReferenceSerializer.cs

示例9: ConvertFrom

 public override object ConvertFrom(ref ObjectContext context, Scalar fromScalar)
 {
     PackageVersion packageVersion;
     if (!PackageVersion.TryParse(fromScalar.Value, out packageVersion))
     {
         throw new YamlException(fromScalar.Start, fromScalar.End, "Invalid version format. Unable to decode [{0}]".ToFormat(fromScalar.Value));
     }
     return packageVersion;
 }
开发者ID:cg123,项目名称:xenko,代码行数:9,代码来源:PackageVersionSerializer.cs

示例10: ConvertFrom

 public override object ConvertFrom(ref ObjectContext context, Scalar fromScalar)
 {
     PackageReference packageReference;
     if (!PackageReference.TryParse(fromScalar.Value, out packageReference))
     {
         throw new YamlException(fromScalar.Start, fromScalar.End, "Unable to decode package reference [{0}]. Expecting format GUID:LOCATION".ToFormat(fromScalar.Value));
     }
     return packageReference;
 }
开发者ID:Powerino73,项目名称:paradox,代码行数:9,代码来源:PackageReferenceSerializer.cs

示例11: ConvertFrom

 public override object ConvertFrom(ref ObjectContext context, Scalar fromScalar)
 {
     AssetReference assetReference;
     if (!AssetReference.TryParse(context.Descriptor.Type, fromScalar.Value, out assetReference))
     {
         throw new YamlException(fromScalar.Start, fromScalar.End, "Unable to decode asset reference [{0}]. Expecting format GUID:LOCATION".ToFormat(fromScalar.Value));
     }
     return assetReference;
 }
开发者ID:h78hy78yhoi8j,项目名称:xenko,代码行数:9,代码来源:AssetReferenceSerializer.cs

示例12: ConvertFrom

 public override object ConvertFrom(ref ObjectContext objectContext, Scalar fromScalar)
 {
     var parameterKey = ParameterKeys.FindByName(fromScalar.Value);
     if (parameterKey == null)
     {
         throw new YamlException(fromScalar.Start, fromScalar.End, "Unable to find registered ParameterKey [{0}]".ToFormat(fromScalar.Value));
     }
     return parameterKey;
 }
开发者ID:ItayGal2,项目名称:paradox,代码行数:9,代码来源:ParameterKeySerializer.cs

示例13: ReadDictionaryItem

        protected override KeyValuePair<object, object> ReadDictionaryItem(ref ObjectContext objectContext, KeyValuePair<Type, Type> keyValueType)
        {
            // Read PropertyKey
            var keyResult = (PropertyKey)objectContext.SerializerContext.ReadYaml(null, keyValueType.Key);

            // Deduce expected value type from PropertyKey
            var valueResult = objectContext.SerializerContext.ReadYaml(null, keyResult.PropertyType);

            return new KeyValuePair<object, object>(keyResult, valueResult);
        }
开发者ID:cg123,项目名称:xenko,代码行数:10,代码来源:ParameterKeyDictionarySerializer.cs

示例14: ConvertFrom

 public override object ConvertFrom(ref ObjectContext objectContext, Scalar fromScalar)
 {
     Guid id;
     if (!Guid.TryParse(fromScalar.Value, out id))
     {
         throw new YamlException(fromScalar.Start, fromScalar.End, $"Unable to parse id [{fromScalar.Value}]");
     }
     var materialNull = new MaterialNull();
     IdentifiableHelper.SetId(materialNull, id);
     return materialNull;
 }
开发者ID:cg123,项目名称:xenko,代码行数:11,代码来源:MaterialNullSerializer.cs

示例15: ConvertFrom

        public override object ConvertFrom(ref ObjectContext context, Scalar fromScalar)
        {
            Guid guid;
            UFile location;
            if (!AssetReference.TryParse(fromScalar.Value, out guid, out location))
            {
                throw new YamlException(fromScalar.Start, fromScalar.End, "Unable to decode asset reference [{0}]. Expecting format GUID:LOCATION".ToFormat(fromScalar.Value));
            }

            return AttachedReferenceManager.CreateSerializableVersion(context.Descriptor.Type, guid, location);
        }
开发者ID:h78hy78yhoi8j,项目名称:xenko,代码行数:11,代码来源:ContentReferenceSerializer.cs


注:本文中的SharpYaml.Serialization.ObjectContext类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。