Rufen Sie bei einem gegebenen C # -Typ seine Basisklassen und implementierten Schnittstellen ab

Ich arbeite an einer Spiele-Engine in C #. Die Klasse, an der ich arbeite, heißtCEntityRegistry, und seine Aufgabe ist es, die vielen Fälle von zu verfolgenCEntity im Spiel. Mein Ziel ist es, das abfragen zu könnenCEntityRegistry mit einem bestimmten Typ, und eine Liste von jedem bekommenCEntity von diesem Typ.

Ich möchte daher eine Karte pflegen:

private IDictionary<Type, HashSet<CEntity>> m_TypeToEntitySet;

Und aktualisieren Sie die Registrierung so:

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);

            }
        }

Das Problem, das ich habe, ist, dass es keine Funktion gibtType.GetAllBaseClassesAndInterfaces- Wie würde ich es schreiben?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage