Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 63994|Απάντηση: 1

[Πηγή] Η C# κληρονομεί τον προσδιορισμό των IsAssignableFrom, IsSubclassOf

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 18/11/2019 11:45:09 π.μ. | | |
Μερικές φορές χρειάζεται να προσδιορίσουμε εάν μια κλάση υλοποιεί μια διεπαφή, όπως όταν χρησιμοποιούμε έναν μηχανισμό ανάκλασης για να βρούμε έναν συγκεκριμένο τύπο.

Με απλά λόγια, μπορείτε να χρησιμοποιήσετε τη μέθοδο Type.IsAssignableFrom:

Το IsAssignableFrom υποδεικνύει εάν ο τύπος BarClass μπορεί να αντιστοιχιστεί στη διασύνδεση IFoo, επομένως η συνθήκη για να επιστρέψει true είναι ότι η BarClass υλοποιεί άμεσα ή έμμεσα τη διασύνδεση IFoo. Υπάρχει επίσης μια μέθοδος στον τύπο Type, IsSubclassOf, η οποία είναιΜόνοΧρησιμοποιείται για να κρίνει τις σχέσεις κληρονομικότητας κλάσεων, όπως π.χ

Υποδεικνύει ότι το FooClass έχει μεταβιβαστεί από το BarClass.

Φυσικά, το IsAssignableFrom μπορεί επίσης να χρησιμοποιηθεί για τον προσδιορισμό της κληρονομικότητας.

Έτσι, για τον ακόλουθο κώδικα:

διεπαφή I { /* ... */ }
κατηγορία Α : I { /* ... */ }
κατηγορία Β : A { /* ... */ }
Οι τιμές που επιστρέφονται για τα IsSubclassOf και IsAssignableFrom είναι:

typeof(A).isAssignableFrom(typeof(I)); ψευδής
typeof(A).isSubClassOf(typeof(I)); ψευδής
  
typeof(I).isAssignableFrom(typeof(A)); Αληθής
typeof(I).isAssignableFrom(typeof(B)); Αληθής
typeof(B).isSubClassOf(typeof(I)); ψευδής
  
typeof(A).isAssignableFrom(typeof(A)); Αληθής
typeof(A).isSubclassof(typeof(A)); ψευδής
  
typeof(A).isAssignableFrom(typeof(B)); Αληθής
typeof(A).isSubclassof(typeof(B)); ψευδής
  
typeof(B).isAssignableFrom(typeof(A)); ψευδής
typeof(B).isSubclassof(typeof(A)); Αληθής






Προηγούμενος:Μετατροπή χρονικής σήμανσης .NET Core (10-bit)
Επόμενος:Φρεάτιο πυρήνα EF: Το DbContextPool προκαλεί εξάντληση της σύνδεσης του χώρου συγκέντρωσης σύνδεσης βάσης δεδομένων
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 19/3/2021 1:39:47 μ.μ. |
Λαμβάνει ένα αντικείμενο που κληρονομεί μια γενική βασική κλάση

Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com