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?

Respuestas a la pregunta(4)

Su respuesta a la pregunta