Περισσότερα
Πώς μπορείτε να χρησιμοποιήσετε προαιρετικές παραμέτρους στη C#;
Σημείωση: Αυτή η ερώτηση τέθηκε σε μια εποχή που η C# δεν υποστήριζε ακόμη προαιρετικές παραμέτρους (δηλαδή πριν από τη C# 4).</sup>,
Κατασκευάζουμε ένα web API που δημιουργείται προγραμματιστικά από μια κλάση C#. Η κλάση έχει τη μέθοδο GetFooBar(int a, int b)
και το API έχει μια μέθοδο GetFooBar
που δέχεται παραμέτρους ερωτήματος όπως &a=foo &b=bar
.
Οι κλάσεις πρέπει να υποστηρίζουν προαιρετικές παραμέτρους, κάτι που δεν υποστηρίζεται στη γλώσσα C#. Ποια είναι η καλύτερη προσέγγιση;
455
3
Στη C#, κανονικά θα χρησιμοποιούσα πολλαπλές μορφές της μεθόδου:
ΑΝΑΘΕΩΡΗΣΗ: Αυτό που αναφέρθηκε παραπάνω ήταν ο τρόπος με τον οποίο έκανα τις προεπιλεγμένες τιμές με την C# 2.0. Τα έργα στα οποία εργάζομαι τώρα χρησιμοποιούν την C# 4.0 η οποία υποστηρίζει πλέον άμεσα προαιρετικές παραμέτρους. Εδώ είναι ένα παράδειγμα που μόλις χρησιμοποίησα στον δικό μου κώδικα:
Από αυτόν τον ιστότοπο:
http://www.tek-tips.com/viewthread.cfm?qid=1500861&page=1
Η C# επιτρέπει τη χρήση του χαρακτηριστικού [Optional] (από τη VB, αν και δεν είναι λειτουργικό στη C#). Έτσι μπορείτε να έχετε μια μέθοδο όπως αυτή:
Στο δικό μας API wrapper, ανιχνεύουμε προαιρετικές παραμέτρους (ParameterInfo p.IsOptional) και ορίζουμε μια προεπιλεγμένη τιμή. Ο στόχος είναι να επισημάνουμε τις παραμέτρους ως προαιρετικές χωρίς να καταφεύγουμε σε αδέξιους τρόπους όπως το να έχουμε το "optional" στο όνομα της παραμέτρου.
Θα μπορούσατε να χρησιμοποιήσετε την υπερφόρτωση μεθόδων...