コード例 #1
0
 internal ValueCollection(ExpandoObject expando)
 {
     lock (expando.LockObject)
     {
         this._expando        = expando;
         this._expandoVersion = expando._data.Version;
         this._expandoCount   = expando._count;
         this._expandoData    = expando._data;
     }
 }
コード例 #2
0
 public IEnumerator <object> GetEnumerator()
 {
     ExpandoObject.ExpandoData iteratorVariable0 = this._expando._data;
     for (int i = 0; i < iteratorVariable0.Class.Keys.Length; i++)
     {
         this.CheckVersion();
         object iteratorVariable2 = iteratorVariable0[i];
         if (iteratorVariable2 != ExpandoObject.Uninitialized)
         {
             yield return(iteratorVariable2);
         }
     }
 }
コード例 #3
0
            public override IEnumerable <string> GetDynamicMemberNames()
            {
                ExpandoObject.ExpandoData iteratorVariable0 = this.Value._data;
                ExpandoClass iteratorVariable1 = iteratorVariable0.Class;

                for (int i = 0; i < iteratorVariable1.Keys.Length; i++)
                {
                    object iteratorVariable3 = iteratorVariable0[i];
                    if (iteratorVariable3 != ExpandoObject.Uninitialized)
                    {
                        yield return(iteratorVariable1.Keys[i]);
                    }
                }
            }
コード例 #4
0
            internal ExpandoObject.ExpandoData UpdateClass(ExpandoClass newClass)
            {
                if (this._dataArray.Length >= newClass.Keys.Length)
                {
                    this[newClass.Keys.Length - 1] = ExpandoObject.Uninitialized;
                    return(new ExpandoObject.ExpandoData(newClass, this._dataArray, this._version));
                }
                int length = this._dataArray.Length;

                object[] destinationArray = new object[GetAlignedSize(newClass.Keys.Length)];
                Array.Copy(this._dataArray, destinationArray, this._dataArray.Length);
                ExpandoObject.ExpandoData data = new ExpandoObject.ExpandoData(newClass, destinationArray, this._version);
                data[length] = ExpandoObject.Uninitialized;
                return(data);
            }
コード例 #5
0
 public bool Contains(object item)
 {
     lock (this._expando.LockObject)
     {
         this.CheckVersion();
         ExpandoObject.ExpandoData data = this._expando._data;
         for (int i = 0; i < data.Class.Keys.Length; i++)
         {
             if (object.Equals(data[i], item))
             {
                 return(true);
             }
         }
         return(false);
     }
 }
コード例 #6
0
 public void CopyTo(object[] array, int arrayIndex)
 {
     ContractUtils.RequiresNotNull(array, "array");
     ContractUtils.RequiresArrayRange <object>(array, arrayIndex, this._expandoCount, "arrayIndex", "Count");
     lock (this._expando.LockObject)
     {
         this.CheckVersion();
         ExpandoObject.ExpandoData data = this._expando._data;
         for (int i = 0; i < data.Class.Keys.Length; i++)
         {
             if (data[i] != ExpandoObject.Uninitialized)
             {
                 array[arrayIndex++] = data[i];
             }
         }
     }
 }