Ανασκόπηση άρθρων σχετικά με τους προβληματισμούς:
Σχετικά με το EMIT Review:
Αρχικά, δημιουργήστε ένα απλό αντικείμενο, δημιουργήστε το αντικείμενο και χρησιμοποιήστε το emit και την έκφραση για να διαβάσετε και να τροποποιήσετε την τιμή του αντικειμένου και μπορείτε να δείτε ότι το αποτέλεσμα εκτέλεσης είναι το αναμενόμενο, όπως φαίνεται στο παρακάτω σχήμα:
Συγκριτική αξιολόγηση με χρήση BenchmarkDotNet για συγκριτική αξιολόγηση, ανάγνωση μόνο τιμών αντικειμένων για δοκιμή, εκτέλεση σε Net472 και NetCoreApp31, τα αποτελέσματα των δοκιμών είναι τα εξής:
Περίληψη:
Τόσο η εκπομπή όσο και η έκφραση είναι πιο αποτελεσματικές από τη χρήση αντανάκλασης για τη λήψη τιμών και στο πλαίσιο .NET 4.7.2, το emit είναι καλύτερο από την αποτελεσματικότητα εκτέλεσης έκφρασης, αλλά στο πλαίσιο .NET Core 3.1, η έκφραση είναι καλύτερη από την εκτέλεση εκπομπής.
Εάν το πρόγραμμά σας χρειάζεται να εκτελέσει δυναμικά ένα αντικείμενο μόνο μία φορά, συνιστάται η χρήση ανάκλασης (εξάλλου, δεν χρειάζεται να ενθυλακώσετε ξανά ή να δημιουργήσετε έναν εκπρόσωπο) και εάν το πρόγραμμά σας χρειάζεται να εκτελέσει δυναμικά ένα αντικείμενο πολλές φορές, συνιστάται η χρήση εκπομπής ή έκφρασης και φυσικά απαιτείται περαιτέρω ενθυλάκωση.
Ο κωδικός δοκιμής έχει ως εξής:
Όταν χρησιμοποιείτε την Παράσταση για τη λήψη τιμών αντικειμένων, το σφάλμα θα αναφέρεται ως εξής:
Η έκφραση τύπου «System.Int32» δεν μπορεί να χρησιμοποιηθεί για τον τύπο επιστροφής «System.Object» Πραγματικά δεν ξέρω πώς το χρησιμοποιούν αυτοί οι άνθρωποι, ξέρουν μόνο να κάνουν αντιγραφή και επικόλληση!
|