private Dictionary<int, List<Component>> entityDictionary = new Dictionary<int, List<Component>>(2000);
private Dictionary<Type, List<Component>> componentDictionary = new Dictionary<Type, List<Component>>(10);
public IEnumerable<T> GetComponents<T>(int entityID) where T : Component
{ ... }
public T GetComponent<T>(int entityID) where T : Component
{ ... }
public T GetNullableComponent<T>(int entityID) where T : Component
{ ... }
public IEnumerable<T> GetComponents<T>() where T: Component
{ ... }