You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							146 lines
						
					
					
						
							4.2 KiB
						
					
					
				
			
		
		
	
	
							146 lines
						
					
					
						
							4.2 KiB
						
					
					
				using KGIS.Plugin.LayerProperty.Utils; | 
						|
using System; | 
						|
using System.Collections; | 
						|
using System.Collections.Generic; | 
						|
using System.Linq; | 
						|
using System.Text; | 
						|
using System.Threading.Tasks; | 
						|
 | 
						|
namespace KGIS.Plugin.LayerProperty.Model | 
						|
{ | 
						|
    public abstract class AbstractStorage<T> | 
						|
    { | 
						|
        public class Collections : IEnumerable | 
						|
        { | 
						|
            private IList<ItemInfo<string, T>> mList; | 
						|
            public int Count | 
						|
            { | 
						|
                get | 
						|
                { | 
						|
                    return this.mList.Count; | 
						|
                } | 
						|
            } | 
						|
            public T this[string instance] | 
						|
            { | 
						|
                get | 
						|
                { | 
						|
                    if (instance == "") | 
						|
                    { | 
						|
                        return default(T); | 
						|
                    } | 
						|
                    foreach (ItemInfo<string, T> current in this.mList) | 
						|
                    { | 
						|
                        if (current.InnerValue.Equals(instance)) | 
						|
                        { | 
						|
                            return current.DisplayValue; | 
						|
                        } | 
						|
                    } | 
						|
                    return default(T); | 
						|
                } | 
						|
            } | 
						|
            public T this[int index] | 
						|
            { | 
						|
                get | 
						|
                { | 
						|
                    if (index < 0 && index > this.mList.Count) | 
						|
                    { | 
						|
                        return default(T); | 
						|
                    } | 
						|
                    return this.mList[index].DisplayValue; | 
						|
                } | 
						|
            } | 
						|
            internal Collections() | 
						|
            { | 
						|
                this.mList = new List<ItemInfo<string, T>>(); | 
						|
            } | 
						|
            internal void Add(ItemInfo<string, T> item) | 
						|
            { | 
						|
                this.mList.Add(item); | 
						|
            } | 
						|
            internal bool Remove(ItemInfo<string, T> item) | 
						|
            { | 
						|
                foreach (ItemInfo<string, T> current in this.mList) | 
						|
                { | 
						|
                    if (current.InnerValue == item.InnerValue) | 
						|
                    { | 
						|
                        this.mList.Remove(current); | 
						|
                        return true; | 
						|
                    } | 
						|
                } | 
						|
                return false; | 
						|
            } | 
						|
            internal bool Remove(string ItemKey) | 
						|
            { | 
						|
                foreach (ItemInfo<string, T> current in this.mList) | 
						|
                { | 
						|
                    if (current.InnerValue == ItemKey) | 
						|
                    { | 
						|
                        this.mList.Remove(current); | 
						|
                        return true; | 
						|
                    } | 
						|
                } | 
						|
                return false; | 
						|
            } | 
						|
            internal bool Exist(ItemInfo<string, T> item) | 
						|
            { | 
						|
                foreach (ItemInfo<string, T> current in this.mList) | 
						|
                { | 
						|
                    if (current.InnerValue == item.InnerValue) | 
						|
                    { | 
						|
                        return true; | 
						|
                    } | 
						|
                } | 
						|
                return false; | 
						|
            } | 
						|
            IEnumerator IEnumerable.GetEnumerator() | 
						|
            { | 
						|
                foreach (ItemInfo<string, T> current in this.mList) | 
						|
                { | 
						|
                    yield return current.DisplayValue; | 
						|
                } | 
						|
                yield break; | 
						|
            } | 
						|
            internal void Clear() | 
						|
            { | 
						|
                this.mList.Clear(); | 
						|
            } | 
						|
        } | 
						|
        private AbstractStorage<T>.Collections collections; | 
						|
        protected AbstractStorage<T>.Collections Collection | 
						|
        { | 
						|
            get | 
						|
            { | 
						|
                return this.collections; | 
						|
            } | 
						|
        } | 
						|
        protected bool Remove(ItemInfo<string, T> item) | 
						|
        { | 
						|
            return this.collections.Remove(item); | 
						|
        } | 
						|
        protected bool Remove(string itemKey) | 
						|
        { | 
						|
            return this.collections.Remove(itemKey); | 
						|
        } | 
						|
        protected bool Add(ItemInfo<string, T> item) | 
						|
        { | 
						|
            if (!this.Exist(item)) | 
						|
            { | 
						|
                this.collections.Add(item); | 
						|
                return true; | 
						|
            } | 
						|
            return false; | 
						|
        } | 
						|
        protected void Clear() | 
						|
        { | 
						|
            this.collections.Clear(); | 
						|
        } | 
						|
        protected bool Exist(ItemInfo<string, T> item) | 
						|
        { | 
						|
            return this.collections.Exist(item); | 
						|
        } | 
						|
        protected AbstractStorage() | 
						|
        { | 
						|
            this.collections = new AbstractStorage<T>.Collections(); | 
						|
        } | 
						|
    } | 
						|
}
 | 
						|
 |