En C# comment pouvez-vous trouver si un objet est une instance de certaines classes mais pas des super-classes de cette classe? "Is" retournera vrai même si l'objet provient réellement d'une superclasseComment trouver si un objet appartient à une classe mais pas à une super-classe?
Répondre
typeof(SpecifiedClass) == obj.GetType()
-1 Cela ne répond pas à la question: il n'est pas possible qu'un type hérite d'un autre sans hériter de tous les autres types de la chaîne d'héritage. –
Cette réponse fonctionne, et assez drôle, cela fonctionne pour toutes les versions de question (vérifier l'histoire) - à la fois pour "superclasse" et "sous-classe". –
Malheureusement, cela n'est pas possible en C# car C# ne supporte pas l'héritage multiple. Donnez cet arbre d'héritage:
GrandParent
Parent
Child
Le Child
aura toujours une instance de chaque type ci-dessus dans la chaîne d'héritage.
Après avoir regardé votre réponse pendant quelques minutes, je pense que je sais ce que vous voulez dire. Je pense. – Tundey
Vous voudrez peut-être regarder quelques méthodes de la classe Type: Type.IsInstaceOf et Type.IsSubclassOf
Vous pouvez passer dans la classe que vous cherchez et obtenir la informations dont vous avez besoin.
C'est à ce moment que vous voulez comparer deux objets entre eux. Mon cas est de comparer un objet avec une classe. – Ali
Il est vrai que ce sont des types, mais vous pouvez obtenir la classe Type pour un objet avec obj.GetType. Exemple:.. obj.GetType() IsSubclassOf (typeof (ClassYouAreLookingFor)) ou obj.GetType() isInstanceOf (typeof (ClassYouAreLookingFor)) devrait accomplir ce que vous cherchez. – CubanX
Vous pouvez comparer le type de l'objet au type de la classe que vous recherchez:
class A { }
class B : A { }
A a = new A();
if(a.GetType() == typeof(A)) // returns true
{
}
A b = new B();
if(b.GetType() == typeof(A)) // returns false
{
}
if(Obj.GetType() == typeof(ClassName))
Cela a fonctionné pour moi
- 1. champ appartient à une classe, mais comment utiliser le polymorphisme
- 2. Comment déterminer si une adresse IP appartient à un pays
- 3. Comment trouver si un nombre appartient à une plage particulière en Python?
- 4. Comment savoir si une instance appartient à un certain type ou à un type dérivé
- 5. Comment trouver si un utilisateur Windows appartient au groupe spécifié?
- 6. Comment ajouter un objet IDisposable + delegate à une classe existante
- 7. Puis-je instancier un objet sous-classe de la superclasse
- 8. À quoi appartient un objet Datasource? Contrôleur ou modèle?
- 9. Comment vérifier si un article appartient à une catégorie dans Wordpress
- 10. Déterminer l'identité de l'objet d'une référence à une superclasse
- 11. Trouver à quelle table appartient un index spécifique
- 12. Comment déduire la classe à laquelle appartient @staticmethod?
- 13. Initialisation d'une classe à l'aide de l'initialiseur de superclasse
- 14. JavaScript orienté objet - Comment définir une classe dans une classe? à partir d'un exemple C#
- 15. Dans Gobject, comment remplacer la méthode de la classe parente appartient à une interface?
- 16. Comment ajouter un événement à une classe
- 17. Un objet polymorphes qui appartient à un objet quasi-IST: object_type est incorrect
- 18. Test si un objet implémente une interface
- 19. Objet de moulage à une classe spécifique en IL?
- 20. passer un objet [] à un objet params [] ne fonctionne pas
- 21. Teste si une classe a un attribut?
- 22. Lancer un objet à une interface générique
- 23. Comment appliquer un effet à une bordure mais pas à son contenu dans WPF?
- 24. SQL Server: comment ajouter une contrainte à une table existante mais uniquement si la contrainte n'existe pas déjà?
- 25. Ajouter une liste générique dans une classe MyClass mais comment?
- 26. Grails appartient à, devrais-je?
- 27. Comment mapper une classe à une balise jsp?
- 28. Est-il toujours valide de convertir un objet d'une classe de base à une sous-classe
- 29. Comment forcer ActiveRecord à recharger une classe?
- 30. Comment attribuer une propriété à un objet jQuery?
Ali, vous vouliez poser des questions sur les sous-classes, pas de superclasses. Si D descend de B, alors D est une sous-classe et B est la superclasse de D. –
@RobKennedy Ce qui n'a aucun sens si vous voyez la signification sémantique de sub/super comme sous-ensemble/sur-ensemble. Je suppose que c'est notre petite blague interne en tant que programmeurs. – Alex
En fait, @Alex, cela rend * parfait * le sens. Un type est simplement l'ensemble de toutes les valeurs qui ont ce type. Toute valeur de type 'D' est donc membre de l'ensemble ** D ** ainsi que de l'ensemble ** B **, mais il y a des membres de l'ensemble ** B ** qui ne sont pas membres de ** RÉ**. Le type ** D ** est donc un sous-ensemble de ** B **. Nous exprimons cela avec la notation 'D <: B'. Consultez [* Types et langages de programmation * par Benjamin C. Pierce] (http://www.cis.upenn.edu/~bcpierce/tapl/index.html). –