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); }
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); }