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


C# BsonToken类代码示例

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


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

示例1: WriteToken

 public void WriteToken(BsonToken t)
 {
   CalculateSize(t);
   WriteTokenInternal(t);
 }
开发者ID:vebin,项目名称:WeiboSdk,代码行数:5,代码来源:BsonBinaryWriter.cs

示例2: WriteTokenInternal

    private void WriteTokenInternal(BsonToken t)
    {
      switch (t.Type)
      {
        case BsonType.Object:
          {
            BsonObject value = (BsonObject)t;
            _writer.Write(value.CalculatedSize);
            foreach (BsonProperty property in value)
            {
              _writer.Write((sbyte)property.Value.Type);
              WriteString((string)property.Name.Value, property.Name.ByteCount, null);
              WriteTokenInternal(property.Value);
            }
            _writer.Write((byte)0);
          }
          break;
        case BsonType.Array:
          {
            BsonArray value = (BsonArray)t;
            _writer.Write(value.CalculatedSize);
            int index = 0;
            foreach (BsonToken c in value)
            {
              _writer.Write((sbyte)c.Type);
              WriteString(index.ToString(CultureInfo.InvariantCulture), MathUtils.IntLength(index), null);
              WriteTokenInternal(c);
              index++;
            }
            _writer.Write((byte)0);
          }
          break;
        case BsonType.Integer:
          {
            BsonValue value = (BsonValue)t;
            _writer.Write(Convert.ToInt32(value.Value, CultureInfo.InvariantCulture));
          }
          break;
        case BsonType.Long:
          {
            BsonValue value = (BsonValue)t;
            _writer.Write(Convert.ToInt64(value.Value, CultureInfo.InvariantCulture));
          }
          break;
        case BsonType.Number:
          {
            BsonValue value = (BsonValue)t;
            _writer.Write(Convert.ToDouble(value.Value, CultureInfo.InvariantCulture));
          }
          break;
        case BsonType.String:
          {
            BsonString value = (BsonString)t;
            WriteString((string)value.Value, value.ByteCount, value.CalculatedSize - 4);
          }
          break;
        case BsonType.Boolean:
          {
            BsonValue value = (BsonValue)t;
            _writer.Write((bool)value.Value);
          }
          break;
        case BsonType.Null:
        case BsonType.Undefined:
          break;
        case BsonType.Date:
          {
            BsonValue value = (BsonValue)t;

            long ticks = 0;

            if (value.Value is DateTime)
            {
              DateTime dateTime = (DateTime)value.Value;
              if (DateTimeKindHandling == DateTimeKind.Utc)
                dateTime = dateTime.ToUniversalTime();
              else if (DateTimeKindHandling == DateTimeKind.Local)
                dateTime = dateTime.ToLocalTime();

              ticks = JsonConvert.ConvertDateTimeToJavaScriptTicks(dateTime, false);
            }
#if !PocketPC && !NET20
            else
            {
              DateTimeOffset dateTimeOffset = (DateTimeOffset)value.Value;
              ticks = JsonConvert.ConvertDateTimeToJavaScriptTicks(dateTimeOffset.UtcDateTime, dateTimeOffset.Offset);
            }
#endif

            _writer.Write(ticks);
          }
          break;
        case BsonType.Binary:
          {
            BsonValue value = (BsonValue)t;

            byte[] data = (byte[])value.Value;
            _writer.Write(data.Length);
            _writer.Write((byte)BsonBinaryType.Binary);
            _writer.Write(data);
//.........这里部分代码省略.........
开发者ID:vebin,项目名称:WeiboSdk,代码行数:101,代码来源:BsonBinaryWriter.cs

示例3: CalculateSize

    private int CalculateSize(BsonToken t)
    {
      switch (t.Type)
      {
        case BsonType.Object:
          {
            BsonObject value = (BsonObject)t;

            int bases = 4;
            foreach (BsonProperty p in value)
            {
              int size = 1;
              size += CalculateSize(p.Name);
              size += CalculateSize(p.Value);

              bases += size;
            }
            bases += 1;
            value.CalculatedSize = bases;
            return bases;
          }
        case BsonType.Array:
          {
            BsonArray value = (BsonArray)t;

            int size = 4;
            int index = 0;
            foreach (BsonToken c in value)
            {
              size += 1;
              size += CalculateSize(MathUtils.IntLength(index));
              size += CalculateSize(c);
              index++;
            }
            size += 1;
            value.CalculatedSize = size;

            return value.CalculatedSize;
          }
        case BsonType.Integer:
          return 4;
        case BsonType.Long:
          return 8;
        case BsonType.Number:
          return 8;
        case BsonType.String:
          {
            BsonString value = (BsonString)t;
            string s = (string)value.Value;
            value.ByteCount = (s != null) ? Encoding.GetByteCount(s) : 0;
            value.CalculatedSize = CalculateSizeWithLength(value.ByteCount, value.IncludeLength);

            return value.CalculatedSize;
          }
        case BsonType.Boolean:
          return 1;
        case BsonType.Null:
        case BsonType.Undefined:
          return 0;
        case BsonType.Date:
          return 8;
        case BsonType.Binary:
          {
            BsonValue value = (BsonValue)t;

            byte[] data = (byte[])value.Value;
            value.CalculatedSize = 4 + 1 + data.Length;

            return value.CalculatedSize;
          }
        case BsonType.Oid:
          return 12;
        case BsonType.Regex:
          {
            BsonRegex value = (BsonRegex)t;
            int size = 0;
            size += CalculateSize(value.Pattern);
            size += CalculateSize(value.Options);
            value.CalculatedSize = size;

            return value.CalculatedSize;
          }
        default:
          throw new ArgumentOutOfRangeException("t", "Unexpected token when writing BSON: {0}".FormatWith(CultureInfo.InvariantCulture, t.Type));
      }
    }
开发者ID:vebin,项目名称:WeiboSdk,代码行数:86,代码来源:BsonBinaryWriter.cs

示例4: AddParent

 private void AddParent(BsonToken container)
 {
     AddToken(container);
     _parent = container;
 }
开发者ID:Houfeng,项目名称:AjaxEngine,代码行数:5,代码来源:BsonWriter.cs

示例5: AddToken

        internal void AddToken(BsonToken token)
        {
            if (_parent != null)
            {
                if (_parent is BsonObject)
                {
                    ((BsonObject)_parent).Add(_propertyName, token);
                    _propertyName = null;
                }
                else
                {
                    ((BsonArray)_parent).Add(token);
                }
            }
            else
            {
                if (token.Type != BsonType.Object && token.Type != BsonType.Array)
                    throw JsonWriterException.Create(this, "Error writing {0} value. BSON must start with an Object or Array.".FormatWith(CultureInfo.InvariantCulture, token.Type), null);

                _parent = token;
                _root = token;
            }
        }
开发者ID:Houfeng,项目名称:AjaxEngine,代码行数:23,代码来源:BsonWriter.cs

示例6: AddToken

 internal void AddToken(BsonToken token)
 {
     if (_parent != null)
     {
         if (_parent is BsonObject)
         {
             ((BsonObject)_parent).Add(_propertyName, token);
             _propertyName = null;
         }
         else
         {
             ((BsonArray)_parent).Add(token);
         }
     }
     else
     {
         _parent = token;
         _root = token;
     }
 }
开发者ID:eopeter,项目名称:dmelibrary,代码行数:20,代码来源:BsonWriter.cs

示例7: RemoveParent

 private void RemoveParent()
 {
     _parent = _parent.Parent;
 }
开发者ID:Houfeng,项目名称:AjaxEngine,代码行数:4,代码来源:BsonWriter.cs


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