Dado un tipo de C #, obtenga sus clases base e interfaces implementadas
Estoy trabajando en un motor de juego en C #. La clase en la que estoy trabajando se llamaCEntityRegistry
, y su trabajo es hacer un seguimiento de los muchos casos deCEntity
en el juego. Mi objetivo es poder consultar elCEntityRegistry
con un tipo dado, y obtener una lista de cadaCEntity
de ese tipo.
Lo que me gustaría hacer, por lo tanto, es mantener un mapa:
private IDictionary<Type, HashSet<CEntity>> m_TypeToEntitySet;
Y así actualizar el registro:
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);
}
}
El problema que tengo es que no hay función.Type.GetAllBaseClassesAndInterfaces
- ¿Cómo me gustaría escribirlo?