public object Resolve(string identifier)
        {
            GameRegistryElement element = _registry.FirstOrDefault(x => x.Identifier == identifier);

            if (element != null)
            {
                return(element.Instance);
            }

            return(null);
        }
        public bool Remove(object obj)
        {
            GameRegistryElement element = _registry.FirstOrDefault(x => x.Instance == obj);

            if (element != null)
            {
                return(_registry.Remove(element));
            }

            return(false);
        }
        public T Resolve <T>()
        {
            Type t = typeof(T);
            GameRegistryElement element = _registry.FirstOrDefault(x => x.Type == t);

            if (element != null)
            {
                return((T)element.Instance);
            }

            return(default(T));
        }
        private void Register(Type t, object obj, string identifier)
        {
            if (obj == null)
            {
                return;
            }

            GameRegistryElement element = _registry.FirstOrDefault(x => x.Type == t && x.Identifier == identifier);

            if (element == null)
            {
                _registry.Add(new GameRegistryElement()
                {
                    Identifier = identifier, Type = t, Instance = obj
                });
            }
            else
            {
                element.Instance = obj;
            }
        }