2009-10-19 1 views

Répondre

11

En supposant que vous avez un ensemble (ou une liste des assemblées) à regarder, vous pouvez obtenir une collection de types qui mettent en œuvre une interface:

var blahs = assembly.GetTypes() 
        .Where(t => typeof(IBlahblah).IsAssignableFrom(t)); 

Vous ne pouvez pas obtenir un collection d'objets "live" implémentant l'interface - du moins pas sans utiliser l'API de débogage/profilage ou quelque chose de similaire.

2

Oui, cela est possible, cet autre débordement de pile post donne la solution avec LINQ.

2

Oui cela est possible:

var result = new List<Type>(); 
    foreach(var assembly in AppDomain.CurrentDomain.GetAssemblies()) 
     foreach(var type in assembly.GetTypes()) 
      if (typeof(IBlahblah).IsAssignableFrom(type)) 
       result.Add(type); 

Et cela inclut les types extérieur de l'ensemble en cours.

Questions connexes