@Jeen99

Как в Dictionary получить элемент по типу?

Написал такой класс, который будет хранить компоненты. Компоненты будут реализованы от разных классов. Студия говорит, что нельзя использовать T по ключу в GetComponent. Как будет правильно реализовать. Может быть есть метод в Dictionary, который позволяет решить мою задачу?
public class DictComponent
	{
		public Dictionary<Type, Component> Components { get; private set; }

		public DictComponent()
		{
			Components = new Dictionary<Type, Component>();
		}

		public T GetComponent<T>()
		{
			// НЕ РАБОТАЕТ
			return (T)Components[T.GetType()];
		}

		public void Add(Component comp)
		{
			Components[comp.GetType()] = comp;
		}
	}
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
freeExec
@freeExec
Участник OpenStreetMap
public Component GetComponent<T>()
{
      // РАБОТАЕТ
      return Components[typeof(T)];
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Jeen99 Автор вопроса
Заметил, что все таки решения отличаются.
public T GetComponent<T>()
		{
			return (T)Components[typeof(T)];
		}

Мой вариант лучше, т.к. объект возвращается именно с тем типом, который запрашивается.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы