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

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

[.NET Πυρήνας] ASP.NET Πυρήνας (iii) Δημιουργήστε δυναμικά παρουσίες χρησιμοποιώντας το ActivatorUtilities

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 1/12/2020 1:50:31 μ.μ. | | | |
Αναθεώρηση:

Το ASP.NET Core (1) χρησιμοποιεί προσωρινή αποθήκευση Redis
https://www.itsvse.com/thread-9393-1-1.html

ASP.NET Πυρήνας (2) Επανεκκινήστε την εφαρμογή με κωδικό
https://www.itsvse.com/thread-9480-1-1.html

Συνήθως ένα στιγμιαίο αντικείμενο είναι μια δημιουργία μιας κλάσης με τη νέα λέξη-κλειδί

Η C# δημιουργεί δυναμικά μια παρουσία μιας κλάσης στο εργοστάσιο κλάσης χρησιμοποιώντας τις ακόλουθες μεθόδους:


Activator.CreateInstance (Τύπος)
Activator.CreateInstance (Τύπος, Αντικείμενο[])


Αρχικά, ορίζουμε μια διεπαφή ITest ως εξής:

Ορίστε δύο υλοποίησης, συγκεκριμένα: TestA και TestB, και ο κώδικας έχει ως εξής:

όπου το TestB έχει έναν μη κενό κατασκευαστή

Η μέθοδος GetUserName στην κλάση TestB πρέπει να διαβάσει το αρχείο διαμόρφωσης μέσω του IConfiguration και, στη συνέχεια, να το συρράψει με τις εισερχόμενες παραμέτρους για να επιστρέψει την τιμή επιστροφής.

Το αρχείο διαμόρφωσης έχει ως εξής:



Δημιουργούμε αντικείμενα φορτώνοντας δυναμικά το dll, δημιουργώντας τα με ανάκλαση και ενσαρκώνοντάς τα μέσω του Activator και του ActivatorUtilities αντίστοιχα, με τον ακόλουθο κώδικα:

Επιστροφή αποτελεσμάτων:

ret
"Γεια σου itsvse.com"
π.χ. Μήνυμα
"Δεν έχει οριστεί κατασκευαστής χωρίς παραμέτρους για τον τύπο 'ClassLibrary1.TestB'."

ret
"Γεια σου itsvse.com"
ret
"ΑΑΑΑ itsvse.com"

Όταν χρησιμοποιείτε το Activator για τη δημιουργία ενός αντικειμένου TestB, αναφέρεται ένα σφάλμα:Δεν έχει οριστεί κατασκευαστής χωρίς παραμέτρους για τον τύπο «ClassLibrary1.TestB».

Η δημιουργία TestA και TestB μέσω του ActivatorUtilities δεν θα αναφέρει σφάλμα και η μέθοδος μπορεί να εκτελεστεί κανονικά, όπως φαίνεται παρακάτω:




Δεν υπάρχει πρόβλημα στη χρήση του Activator για τη δημιουργία αντικειμένων στο πλαίσιο .NET, αλλά στον πυρήνα asp.net, εισάγονται οι έννοιες του IOC και του DI και πολλά αντικείμενα δεν είναι κατασκευαστές χωρίς παραμέτρους και πρέπει να περάσουν στην αντίστοιχη κλάση υλοποίησης.

Όπου _services στατικές μεταβλητές ορίζονται ως εξής:

CreateInstance(IServiceProvider; Τύπος, Αντικείμενο[])
παράμετρος

Πάροχος
IServiceProvider
Πάροχος υπηρεσιών για την επίλυση εξαρτήσεων

instanceType
Τύπος
Ο τύπος που θα ενεργοποιηθεί

Παράμετροι
Αντικείμενο[]
Παράμετροι κατασκευαστή που δεν παρέχονται από τον πάροχο


Αναφορά:Η σύνδεση με υπερσύνδεσμο είναι ορατή.

(Τέλος)




Προηγούμενος:Ανάλυση ασφάλειας OAuth 2.0 για φορητές συσκευές και επιτραπέζιους υπολογιστές και μηχανισμός CodeVerifier
Επόμενος:Χρησιμοποιήστε το JSC για να δημιουργήσετε ένα dll σε JavaScript για κλήσεις C#
Δημοσιεύτηκε στις 22/9/2021 8:31:33 μ.μ. |
Μάθε να μαθαίνεις...
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com