È possibile in C# ottenere tipi di sottoclassi dalla classe base?Ottieni classi figlio dalla classe base
17
A
risposta
23
Non direttamente, tuttavia è possibile utilizzare AppDomain.GetAssemblies() per ottenere tutti gli assembly attualmente caricati e quindi utilizzare Assembly.GetTypes() per ottenere tutti i tipi in tale assembly. Quindi usa Type.IsSubclassOf() per determinare se si tratta di una sottoclasse del tipo che stai cercando.
4
è possibile selezionare l'Assemblea si desidera controllare, ottenere i tipi con il metodo Assembly.GetTypes()
e il test per ciascuno di essi, se si tratta di una sottoclasse con Type.IsSubclassOf()
vedere Assembly members e Type members
19
È possibile farlo :
var subclassTypes = Assembly
.GetAssembly(typeof(BaseClass))
.GetTypes()
.Where(t => t.IsSubclassOf(typeof(BaseClass)));
3
provare questo codice:
public static IEnumerable<Type> GetAllSubclassOf(Type parent)
{
foreach (var a in AppDomain.CurrentDomain.GetAssemblies())
foreach (var t in a.GetTypes())
if (t.IsSubclassOf(parent)) yield return t;
}
Problemi correlati
- 1. Come trovare il nome classe figlio dalla classe base?
- 2. Restituisce classe figlio dalla classe padre
- 3. Ottieni il nome classe dalla classe estesa
- 4. Ottieni bytecode dalla classe caricata
- 5. Accesso al prototipo di classe figlio dalla classe genitore
- 6. classi figlie istanziare dalla classe genitore (PHP)
- 7. Ottieni l'attributo dalla classe generata dinamicamente
- 8. Seleziona elemento in base alla classe figlio
- 9. C# ereditarietà. classe derivata dalla classe Base
- 10. C++ Polymorphism: dalla classe padre al figlio
- 11. Chiamare un metodo sovrascritto dalla classe base
- 12. Classi case ereditate dalla classe astratta
- 13. Come serializzare XML classe figlio con la sua classe base
- 14. Come ottenere il nome classe figlio dalla classe genitore
- 15. jquery rimuove tutte le classi dalla classe
- 16. come ottenere il nome della classe derivata dalla classe base
- 17. Ottieni valori di enumerazione dalla classe
- 18. Ottieni binding dalla classe di visualizzazione
- 19. Ottieni una dichiarazione d'uso dalla classe
- 20. Evento eventi di classe base in classi derivate C#
- 21. Come chiamare un metodo genitore dalla classe figlio in javascript?
- 22. Impossibile accedere membro protetto della classe base dalla classe derivata
- 23. Funzione chiamata dattiloscritto dalla classe base
- 24. Perl: Come importare subroutine dalla classe base?
- 25. Derivato dalla classe derivata alla base
- 26. Non chiamare costruttore della classe base dalla classe derivata
- 27. Metodo della classe derivata dalla classe base riferimento
- 28. ereditarietà multipla colata dalla classe base alla diversa classe derivata
- 29. Propagazione "typedef" dalla classe base alla classe derivata per "modello"
- 30. Chiamata al metodo principale della classe ereditata dalla classe base
Grazie. Funziona. – Polaris
C'è un modo per ottenere solo gli assembly utente (al contrario degli assembly di sistema)? Se esiste un'opzione per ottenere questo assembly e tutti gli assembly referenziati (a questo) rappresentano una buona soluzione. – Shimmy
Trovato: http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getreferencedassemblies.aspx – Shimmy