I'm working on a game engine in C#. The class I'm working on is called CEntityRegistry
, and its job is to keep track of the many instances of CEntity
in the game. My goal is to be able to query the CEntityRegistry
with a given type, and get a list of each CEntity
of that type.
What I'd like to do, therefore, is maintain a map:
private IDictionary<Type, HashSet<CEntity>> m_TypeToEntitySet;
And update the registry thusly:
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);
}
}
The problem I have is that there is no function Type.GetAllBaseClassesAndInterfaces
- How would I go about writing it?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…