コード例 #1
0
        private T AddNewObject <T>(ItemsChoiceType6 type) where T : class, new()
        {
            T t = new T();

            lock (this)
            {
                this.itemsElementNameField.Add(type);
                this.itemsField.Add(t);
            }
            return(t);
        }
コード例 #2
0
        private T InsertNewObject <T>(ItemsChoiceType6 type, int p) where T : class, new()
        {
            T t = new T();

            lock (this)
            {
                int pos = GetObjectIndex(type, p);
                this.itemsElementNameField.Insert(pos, type);
                this.itemsField.Insert(pos, t);
            }
            return(t);
        }
コード例 #3
0
 private T GetObjectArray <T>(int p, ItemsChoiceType6 type) where T : class
 {
     lock (this)
     {
         int pos = GetObjectIndex(type, p);
         if (pos < 0 || pos >= this.itemsField.Count)
         {
             return(null);
         }
         return(itemsField[pos] as T);
     }
 }
コード例 #4
0
 private void RemoveObject(ItemsChoiceType6 type, int p)
 {
     lock (this)
     {
         int pos = GetObjectIndex(type, p);
         if (pos < 0 || pos >= this.itemsField.Count)
         {
             return;
         }
         itemsElementNameField.RemoveAt(pos);
         itemsField.RemoveAt(pos);
     }
 }
コード例 #5
0
 private int SizeOfArray(ItemsChoiceType6 type)
 {
     lock (this)
     {
         int size = 0;
         for (int i = 0; i < itemsElementNameField.Count; i++)
         {
             if (itemsElementNameField[i] == type)
             {
                 size++;
             }
         }
         return(size);
     }
 }
コード例 #6
0
 private List <T> GetObjectList <T>(ItemsChoiceType6 type) where T : class
 {
     lock (this)
     {
         List <T> list = new List <T>();
         for (int i = 0; i < itemsElementNameField.Count; i++)
         {
             if (itemsElementNameField[i] == type)
             {
                 list.Add(itemsField[i] as T);
             }
         }
         return(list);
     }
 }
コード例 #7
0
 private void SetObject <T>(ItemsChoiceType6 type, int p, T obj) where T : class
 {
     lock (this)
     {
         int pos = GetObjectIndex(type, p);
         if (pos < 0 || pos >= this.itemsField.Count)
         {
             return;
         }
         if (this.itemsField[pos] is T)
         {
             this.itemsField[pos] = obj;
         }
         else
         {
             throw new Exception(string.Format(@"object types are difference, itemsField[{0}] is {1}, and parameter obj is {2}",
                                               pos, this.itemsField[pos].GetType().Name, typeof(T).Name));
         }
     }
 }
コード例 #8
0
        private int GetObjectIndex(ItemsChoiceType6 type, int p)
        {
            int index = -1;
            int pos   = 0;

            for (int i = 0; i < itemsElementNameField.Count; i++)
            {
                if (itemsElementNameField[i] == type)
                {
                    if (pos == p)
                    {
                        index = i;
                        break;
                    }
                    else
                    {
                        pos++;
                    }
                }
            }
            return(index);
        }