Я работаю над игровым движком на C #. Класс, над которым я работаю, называется CEntityRegistry
, и его задача - отслеживать множество случаев CEntity
в игре. Моя цель - иметь возможность запросить CEntityRegistry
с заданным типом и получить список каждого CEntity
этого типа.
Поэтому я бы хотел сохранить карту:
private IDictionary<Type, HashSet<CEntity>> m_TypeToEntitySet;
И обновите реестр таким образом:
private void m_UpdateEntityList()
{
foreach (CEntity theEntity in m_EntitiesToRemove.dequeueAll())
{
foreach (HashSet<CEntity> set in m_TypeToEntitySet.Values)
{
if (set.Contains(theEntity))
set.Remove(theEntity);
}
}
foreach (CEntity theEntity in m_EntitiesToAdd.dequeueAll())
{
Type entityType = theEntity.GetType();
foreach (Type baseClass in entityType.GetAllBaseClassesAndInterfaces())
m_TypeToEntitySet[baseClass].Add(theEntity);
}
}
Проблема в том, что у меня нет функции Type.GetAllBaseClassesAndInterfaces
- Как мне написать ее?