2009-02-10 3 views
0

Ceci est question sœur de this oneComment puis-je obtenir tous les types de fond dans un assemblage?

Si j'ai une instance de

System.Reflection.Assembly 

et j'ai le modèle suivant:

class Person {} 
class Student : Person {} 
class Freshman : Student {} 
class Employee : Person {} 
class PersonList : ArrayList {} 
class StudentList : PersonList {} 

Comment puis-je énumérer les types de l'assemblée pour obtenir une référence à Employee, Freshman et StudentList? Je voudrais être en mesure d'énumérer tous les types de fond pour un ensemble donné comme l'exemple ci-dessus.

Merci pour votre temps :)

Répondre

7

Vous voulez trouver tous les types qui aucun autre type dans l'assemblage tire de, non?

(refactorisé pour une meilleure lisibilité.)

var allTypes = assembly.GetTypes(); 
var baseTypes = allTypes.Select(type => type.BaseType); 
var bottomTypes = allTypes.Except(baseTypes); 

(Faites-moi savoir si vous voulez une version .NET 2.0. Ce sera un peu plus douloureux.)

+0

Merci Jon. Cela semble bon. –