Per un oggetto, posso ottenere tutte le sue sottoclassi mediante la riflessione?Per un oggetto, posso ottenere tutte le sue sottoclassi usando la riflessione o altri modi?
risposta
È possibile caricare tutti i tipi nell'assieme e quindi enumerarli per vedere quali implementano il tipo di oggetto. Hai detto "oggetto" quindi l'esempio di codice seguente non è per le interfacce. Inoltre, questo esempio di codice cerca solo la stessa assemblea come l'oggetto è stata dichiarata in.
class A
{}
...
typeof(A).Assembly.GetTypes().Where(type => type.IsSubclassOf(typeof(A)));
O come suggerito nei commenti, utilizzare questo esempio di codice per la ricerca in tutte le assemblee caricati.
var subclasses =
from assembly in AppDomain.CurrentDomain.GetAssemblies()
from type in assembly.GetTypes()
where type.IsSubclassOf(typeof(A))
select type
Entrambi i campioni di codice richiedono di aggiungere using System.Linq;
interfacce
sottoclassi significato? Sì:
this.GetType().GetInterfaces()
Sottoclassi che significano tipi di base? Bene, C# può avere solo una classe base
Sottoclassi che significano tutte le classi che ereditano dalla tua classe? Sì:
EDIT: (vcsjones grazie)
foreach(var asm in AppDomain.CurrentDomain.GetAssemblies())
{
foreach (var type in asm.GetTypes())
{
if (type.BaseType == this.GetType())
yield return type;
}
}
E farlo per tutti gli assembly caricati
"Sottoclassi con significato interfacce" - scusate, ma questo non ha senso – BartoszKP
- 1. per tutte le sottoclassi
- 2. Ottenere tutte le classi interne per riflessione
- 3. Creare un nuovo oggetto usando la riflessione?
- 4. utilizzando la riflessione di ottenere tutte le proprietà di un oggetto non implementato da un'interfaccia
- 5. Ottenere una coda senza fornire tutte le sue proprietà
- 6. Elenca tutte le sottoclassi con nomi completi
- 7. Riflessione. Cosa possiamo ottenere usando?
- 8. È possibile ottenere tutte le sottoclassi di una classe?
- 9. come ottenere tutte le sottoclassi di una classe in php
- 10. Trova tutte le sottoclassi di dardo
- 11. Come trovare tutte le sottoclassi diretti di una classe con .NET riflessione
- 12. AppleScript: ottenere un elenco di tutte le proprietà di un oggetto o classe
- 13. Come controllare tutte le classi sotto o usando una classe?
- 14. Riflessione Per ottenere le informazioni Delegato
- 15. Richiede la dipendenza per ottenere Rails sottoclassi
- 16. Riflesso Javascript - ottieni tutte le proprietà di un oggetto?
- 17. sovrascrive i metodi java final tramite riflessione o altri mezzi?
- 18. C# Ottenere il valore di parms usando la riflessione
- 19. Come ottenere tutte le classi con Javassist usando un pattern
- 20. Ottieni tutte le classi che implementano un tratto in Scala utilizzando la riflessione
- 21. Come posso interrogare memcached con php per ottenere un elenco di tutte le sue chiavi in memoria?
- 22. Utilizzando la riflessione, come posso rilevare le proprietà che hanno setter.
- 23. Come ottenere il nome della variabile usando la riflessione?
- 24. Ottenere oggetto nidificato Proprietà Valore utilizzando la riflessione
- 25. Come ottenere un dump di tutte le variabili locali?
- 26. In Perl/Moose, come posso applicare un modificatore a un metodo in tutte le sottoclassi?
- 27. Come posso determinare i tipi di proprietà usando la riflessione?
- 28. Come usare Scala riflessione API per ottenere tutte le classi contenute
- 29. Come ottenere tutte le proprietà statiche ei suoi valori di una classe utilizzando la riflessione
- 30. Oggetto C++ senza sottoclassi?
Per fare la stessa cosa per un'interfaccia invece di un oggetto/classe, modificare la riga dove ' dove typeof (IMyInterface) .IsAssignableFrom (type) && type.IsClass' ([domanda originale] (http://stackoverflow.com/questions/26733/getting-all-types-that-implement-an-interface-with-c -sharp-3-0)). – jtpereyda