Dla obiektu, czy mogę uzyskać wszystkie jego podklasy za pomocą odbicia?Dla obiektu, czy mogę uzyskać wszystkie jego podklasy za pomocą odbicia lub innych sposobów?
Odpowiedz
Można załadować wszystkie typy w zespole, a następnie wyliczyć je, aby zobaczyć, które z nich implementują typ obiektu. Powiedziałeś "obiekt", więc poniższy przykład kodu nie dotyczy interfejsów. Poza tym, ten przykładowy kod przeszukuje tylko ten sam zespół jak obiekt został ogłoszony w.
class A
{}
...
typeof(A).Assembly.GetTypes().Where(type => type.IsSubclassOf(typeof(A)));
Albo jak zasugerowano w komentarze, korzystać z tej próbki kodu do przeszukiwania wszystkich obciążonych zespołów.
var subclasses =
from assembly in AppDomain.CurrentDomain.GetAssemblies()
from type in assembly.GetTypes()
where type.IsSubclassOf(typeof(A))
select type
Obie próbki kodu wymaga, aby dodać using System.Linq;
interfejsy
podklasy znaczy? Tak:
this.GetType().GetInterfaces()
Podklasy oznaczające typy podstawowe? C# może mieć tylko jedną klasę podstawową, która oznacza wszystkie klasy dziedziczące po klasie? Tak:
EDIT: (vcsjones thanks)
foreach(var asm in AppDomain.CurrentDomain.GetAssemblies())
{
foreach (var type in asm.GetTypes())
{
if (type.BaseType == this.GetType())
yield return type;
}
}
A to dla wszystkich załadowanych zespołów
"Podklasy oznaczające interfejsy" - przepraszam, ale to nie ma sensu – BartoszKP
- 1. Czy można uzyskać wszystkie podklasy klasy?
- 2. Jak mogę uzyskać wszystkie stałe typu według odbicia?
- 3. Jak mogę uzyskać wartość właściwości ciągu za pomocą Odbicia?
- 4. Czy mogę uzyskać podpis delegata C# według jego typu?
- 5. Jak mogę uzyskać wszystkie obiekty vals i podobiektów vals za pomocą odbicia w Scali?
- 6. Pobieramy getter lub setter fasoli za pomocą odbicia?
- 7. Uzyskaj nazwy właściwości za pomocą odbicia obiektu COM
- 8. Jak mogę sprawdzić, czy metoda jest statyczna za pomocą odbicia?
- 9. Jak uzyskać WSZYSTKIE grupy użytkowników AD (rekurencyjnie) za pomocą Powershell lub innych narzędzi?
- 10. Jak ustalić, czy właściwość należy do klasy podstawowej lub podklasy dynamicznie w typie ogólnym za pomocą odbicia?
- 11. Ustawianie właściwości obiektu za pomocą odbicia o różnych typach właściwości
- 12. Jak dynamicznie ustawić wartość właściwości instancji obiektu za pomocą odbicia?
- 13. Jak uzyskać poprawną definicję tekstu typu ogólnego za pomocą odbicia?
- 14. Czy mogę używać konsoli/alertu/niektórych innych sposobów do odczytywania WSZYSTKICH właściwości CSS naraz?
- 15. Jak mogę przesłonić metody w Javie podczas tworzenia obiektu za pomocą odbicia?
- 16. Jak uzyskać nazwę i typ metody wywołania za pomocą odbicia?
- 17. Jak uzyskać nazwę bieżącej właściwości za pomocą odbicia?
- 18. C# za pomocą odbicia, aby uzyskać dostęp do właściwości okna
- 19. Jak uzyskać wszystkie identyfikatory za pomocą jQuery?
- 20. Jak uzyskać rejestrator dla podklasy?
- 21. Jak uzyskać wartość odziedziczonej własności za pomocą odbicia?
- 22. Jak mogę uprościć wywołanie metody rozszerzenia Linq za pomocą odbicia?
- 23. Jak uzyskać element według wartości jego atrybutu za pomocą JDOM?
- 24. C# Korzystanie z odbicia, aby uzyskać właściwości obiektu ogólnego (i jego obiektów zagnieżdżonych)
- 25. Jak określić typy właściwości za pomocą odbicia?
- 26. Czy mogę przesłonić właściwości obiektu definicji parametru podczas jego tworzenia?
- 27. Utwórz nowy obiekt za pomocą odbicia?
- 28. Android/Java: Wywołanie metody za pomocą odbicia?
- 29. Chcę zabić std :: thread za pomocą jego obiektu wątku?
- 30. Przekazywanie argumentów do konkretnej podklasy za pomocą metody fabrycznej
Aby zrobić to samo dla interfejsu zamiast obiektu/klasy, zmień gdzie linię do ' gdzie typeof (IMyInterface) .IsAssignableFrom (type) && type.IsClass' ([pytanie oryginalne] (http://stackoverflow.com/questions/26733/getting-all- typeses-that-implement-an-interface- with-c -sharp-3-0)). – jtpereyda