Exemple #1
0
        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);
            }
        }
Exemple #2
0
 public ILInstanceHolderPoolItem(ILInstanceHolderPoolItem Item)
 {
     this.Item = Item;
 }
Exemple #3
0
 internal void Free(ILInstanceHolderPoolItem Item)
 {
     FreeItems.AddLast(Item.Index);
 }