public static T Get <T>()
{
object obj;
objects.TryGetValue(typeof(T), out obj);
if (obj == null)
{
if (typeof(Object).IsAssignableFrom(typeof(T)))
{
obj = Object.FindObjectOfType(typeof(T));
}
else
{
obj = Activator.CreateInstance <T>();
}
objects[typeof(T)] = obj;
}
return((T)obj);
}