Задать вопрос
@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;
		}
	}
  • Вопрос задан
  • 80 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Решения вопроса 1
freeExec
@freeExec
Участник OpenStreetMap
public Component GetComponent<T>()
{
      // РАБОТАЕТ
      return Components[typeof(T)];
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Jeen99 Автор вопроса
Заметил, что все таки решения отличаются.
public T GetComponent<T>()
		{
			return (T)Components[typeof(T)];
		}

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

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

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