public ILInstanceHolderPool(Type ItemType, int Count, string TypeName = null) { this.ItemType = ItemType; this.CapacityCount = Count; if (TypeName == null) { TypeName = "DynamicType" + Autoincrement++; } var TypeBuilder = ModuleBuilder.DefineType(TypeName, TypeAttributes.Sealed | TypeAttributes.Public | TypeAttributes.Class); FieldInfos = new ILInstanceHolderPoolItem[Count]; var Names = new string[Count]; for (int n = 0; n < Count; n++) { Names[n] = String.Format("V{0}", n); TypeBuilder.DefineField(Names[n], ItemType, FieldAttributes.Public | FieldAttributes.Static); } HolderType = TypeBuilder.CreateType(); var Fields = HolderType.GetFields(); for (int n = 0; n < Count; n++) { FieldInfos[n] = new ILInstanceHolderPoolItem(this, n, Fields[n]); FreeItems.AddLast(n); } }
public ILInstanceHolderPoolItem(ILInstanceHolderPoolItem Item) { this.Item = Item; }
internal void Free(ILInstanceHolderPoolItem Item) { FreeItems.AddLast(Item.Index); }