internal ValueCollection(ExpandoObject expando) { lock (expando.LockObject) { this._expando = expando; this._expandoVersion = expando._data.Version; this._expandoCount = expando._count; this._expandoData = expando._data; } }
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); } } }
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]); } } }
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); }
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); } }
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]; } } } }