Exemplo n.º 1
0
        /// <summary>
        /// Writes the property name of a name/value pair on a Json object.
        /// </summary>
        /// <param name="name">The name of the property.</param>
        public override void WritePropertyName(string name)
        {
            base.WritePropertyName(name);

            int ref_index = 0;

            if (!this.PropertyReferences.TryGetValue(name, out ref_index))
            {
                bool   toShared = false;
                byte[] buf;
                if (SmileUtil.IsASCIIBytes(name, out buf))
                {
                    toShared = _writer.WriteAsciiPropertyName(buf);
                }
                else
                {
                    toShared = _writer.WriteUnicodePropertyName(buf);
                }

                if (toShared)
                {
                    ref_index = CurrentPropertyReferenceIndex;
                    this.PropertyReferences.Add(name, ref_index);
                    CurrentPropertyReferenceIndex++;
                }
            }
            else
            {
                _writer.WriteShortReferencePropertyName(ref_index);
            }
        }