Je veux obtenir le nom de la classe de base à partir d'une classe dérivée en utilisant la réflexion.Comment obtenir le nom de la classe de base d'une classe dérivée en C#
Répondre
Type type = typeof(Derived);
Type baseType = type.BaseType;
if(baseType != null) {
string baseTypeName = baseType.Name;
Console.WriteLine(baseTypeName);
}
else {
Console.WriteLine("No base type.");
}
Vous pouvez également utiliser Type.FullName
si vous voulez que le nom complet.
Je n'étais pas sûr de savoir ce que voulait dire votre question. Vous avez déjà obtenu quelques réponses vous montrant comment obtenir le type de base du type dérivé.
Type baseType = type.BaseType;
Pour aller dans l'autre sens si vous avez une référence d'un type de base, vous pouvez utiliser GetType pour obtenir le type dynamique:
BaseClass foo = ....;
Type type = foo.GetType();
Si vous voulez juste le simple nom:
var name = typeof(DerivedType).BaseType.Name;
Ou si vous voulez que l'assemblage nom qualifié:
var name = typeof(DerivedType).BaseType.AssemblyQualifiedName;
Si vous voulez un code qui ne sera pas lancer une exception de référence null:
var type = typeof(DerivedType);
var parentType = type.BaseType;
if(parentType != null)
{
var name = parentType.Name;
var assemblyQualifiedName = parentType.AssemblyQualifiedName;
}
C'est 'Type.BaseType' pas' Type.BaseClass'. – jason
BaseClassInstance.GetType().BaseType.FullName;
devrait faire l'affaire
Une réflexion pourrait faire la magie:
var type = this.GetType();
while(type.BaseType != typeof(object))
{
type = type.BaseType;
}
Console.WriteLine(type.Name);
Vous pouvez l'obtenir comme ceci:
class BaseClass { }
class DerivedClass : BaseClass { }
[Test]
public void TestBaseName()
{
var a = new DerivedClass();
Assert.AreEqual(a.GetType().BaseType.Name, "BaseClass");
}
Merci. Je trouve que NUnit est très utile pour écrire un exemple de code, car avant de le publier, je peux vérifier qu'il fonctionne réellement. –
ChildClass cc = new ChildClass();
string baseNameClass = cc.GetType().BaseType.FullName;
- 1. Java; conversion de la classe de base en classe dérivée
- 2. classe de base et la classe dérivée
- 3. C# Obtenir le nom du type dérivé à partir de la classe de base interne Classe
- 4. Convertir la classe de base en classe dérivée
- 5. de la classe dérivée à la classe de base
- 6. Référence membres de classe de base de la classe dérivée
- 7. Impossible de convertir la classe dérivée en classe de base
- 8. Classe dérivée de la classe de base en php
- 9. Comment appeler la méthode de classe de base à partir de la classe dérivée en C++?
- 10. Comment obtenir le nom de la classe
- 11. Comment obtenir le type de classe dérivée à la classe de base sans génériques?
- 12. comment C++ assure le concept de classe de base et la classe dérivée
- 13. Obtenir la classe dérivée par pointeur de base?
- 14. Comment initialiser une classe dérivée en C#?
- 15. classe dérivée ne peut pas afficher la valeur des variables de classe de base en C#
- 16. Utiliser struct comme base pour la classe dérivée en C++
- 17. Assigner classe dérivée à la classe de base
- 18. Faire que le pointeur de classe de base se comporte comme une classe dérivée en C++
- 19. aspect Override classe de base PostSharp en classe dérivée
- 20. constructeur de classe dérivée prenant objet de classe de base
- 21. Accès à une propriété de classe dérivée de la classe de base en C#
- 22. C++ Comment appeler une fonction de classe template surchargée dans la classe dérivée, à partir de la classe dérivée?
- 23. Classe dérivée d'accès de la classe de base
- 24. Accès classe dérivée de l'émission d'objets de classe de base
- 25. Comment accéder à une valeur de classe de base à partir de la classe dérivée C#
- 26. Comment trouver le nom de la classe parent, dans une classe de base en C#?
- 27. Surcharge de l'opérateur de sortie pour la classe de base et sa classe dérivée (C++)
- 28. Comment sérialiser une classe dérivée comme classe de base
- 29. C++ - Instanciation de la classe dérivée et utilisation du constructeur de la classe de base
- 30. Comment obtenir le nom de la classe appelante en Java?
Peut-être que je l'interprète mal, mais votre question et votre titre semblent se contredire. –
Je suis désolé si ma question n'est pas claire, mais j'ai la réponse que je cherchais. Merci quand même –