示例#1
0
 public T GetData <T>(string name, GetterType type = GetterType.Fetch) where T : class, IConvertData, new()
 {
     if (data.ContainsKey(name))
     {
         if (type == GetterType.CreateOnly)
         {
             return(null);
         }
         return(data[name] as T);
     }
     if (type == GetterType.Create || type == GetterType.CreateOnly)
     {
         Message("Creating " + name + " as " + typeof(T).Name);
         data[name] = new T();
         return(data[name] as T);
     }
     if (type == GetterType.FetchOrDefault || type == GetterType.CreateOrDefault)
     {
         if (defaults.ContainsKey(typeof(T).FullName))
         {
             return(defaults[typeof(T).FullName] as T);
         }
     }
     if (type == GetterType.CreateOrDefault || type == GetterType.CreateAsDefault)
     {
         Message("Creating " + name + " as " + typeof(T).Name);
         data[name] = new T();
         defaults[typeof(T).FullName] = data[name];
         return(data[name] as T);
     }
     return(null);
 }
示例#2
0
        static private T Get <T>(T[] elems, ref int counter, GetterType getterType) where T : class
        {
            T elem = null;

            if (elems != null && elems.Length > 0)
            {
                if (getterType == GetterType.Sequential)
                {
                    elem = GetElem(elems, counter);
                    ++counter;
                }
                else
                {
                    elem = GetRandom(elems);
                }
            }
            return(elem);
        }