Ejemplo n.º 1
0
        private void EntityComponentRequested(object sender, ComponentRequestEventArgs e)
        {
            MethodInfo method = cacheManager.GetType().GetMethod(nameof(CacheManager.GetItemFromCache));

            method = method.MakeGenericMethod(e.RequestedType);
            e.SetComponent((IComponent)method.Invoke(cacheManager, Array.Empty <object>()));
        }
Ejemplo n.º 2
0
        public void AddComponent <ComponentType>()
            where ComponentType : class, IComponent, new()
        {
            Type type = typeof(ComponentType);
            ComponentRequestEventArgs args;

            if (components.ContainsKey(type))
            {
                throw new ArgumentException($"Component with type \"{type.Name}\" already exists.", nameof(ComponentType));
            }

            args = new ComponentRequestEventArgs(typeof(ComponentType));

            ComponentRequested?.Invoke(this, args);
            components.Add(type, args.Component);
            ComponentAdded?.Invoke(this, args);
        }