2008-12-05 10 views
10

Existe-t-il un moyen d'obtenir un objet à partir d'un espace de noms spécifique? Peut-être avec le System.Reflections? Je veux obtenir tous les objets de type ITestType dans l'espace de noms Test.TestTypes en tant qu'objets afin que j'ai une liste d'instances de TestType1, TestType2, TestType3 et ainsi de suite. Est-ce que quelqu'un peut m'aider? Je ne sais pas où chercher ça.Extraction de toutes les classes d'un espace de noms spécifique

Répondre

19

Vous pouvez trouver tous les types dans un assemblage, et trouver tous les types qui correspondent à l'espace de noms donné (c'est vraiment facile avec LINQ) - mais si vous n'avez pas d'assemblage spécifique à regarder, vous devez examiner tous les des possibles. Cependant, si vous cherchez un moyen de trouver tous les objets en direct, c'est une question différente - et vous ne pouvez pas le faire sans utiliser l'API de profileur, autant que je sache. (Même alors, il peut être difficile - je ne sais pas.)

Voici la requête LINQ si:

public static IEnumerable<Type> GetTypesFromNamespace(Assembly assembly, 
               String desiredNamespace) 
{ 
    return assembly.GetTypes() 
        .Where(type => type.Namespace == desiredNamespace); 
} 
Questions connexes