Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Interface programming

Îåêßíçóå áðü ôï ìÝëïò axaros. Τελευταία δημοσίευση από το μέλος axaros στις 25-10-2005, 11:19. Υπάρχουν 64 απαντήσεις.
Σελίδα 5 από 5 (65 εγγραφές)   < 1 2 3 4 5
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  14-10-2005, 09:48 6164 σε απάντηση της 6150

    Απ: Interface programming

    Καλημέρα Άγγελε !!!
    Συμφωνώ με την άποψη σου περί shadowing γενικότερα. Στην προκειμένη βέβαια
    αν κάποιος θελήσει να κάνει implement ένα (2nd level) subclass πχ για το MS Access
    implementation προφανώς θα έχει σοβαρές αλλαγές και λόγους να το κάνει ...
    Από την άλλη μιλάω χωρίς τον ξενοδόχο .....

    Γιάννη όντως αυτό ενοούσες (περi Shadowing ...);


    Πάνος Αβραμίδης
  •  14-10-2005, 11:11 6168 σε απάντηση της 6164

    Απ: Interface programming

    Αν γράψεις Me.GetType() αντί για MethodInfo.CurrentMethod().ReflectedType θα σου γυρίζει MSAccessMid ή γενικότερα το runtime type σε κάθε περίπτωση
    Angel
    O:]
  •  14-10-2005, 11:28 6169 σε απάντηση της 6168

    Απ: Interface programming

    Σωστά όντως ...
    Έστω και με τον άκομψο τρόπο του Type.GetType("TypeInquestion").
    Άρα όντως δεν χρειάζομαι απαραίτητα Reflection ....


    Πάνος Αβραμίδης
  •  14-10-2005, 11:53 6170 σε απάντηση της 6164

    Απ: Interface programming

    Έχουμε ξεφύγει λίγο γιατί το παράδειγμα που χρησιμοποιούμε δεν είναι και το καλύτερο για να μιλήσουμε για το θέμα που συζητάμε τελικά σε αυτή την φάση. Όμως γενικά ισχύει το εξής: Εφόσον χρειαστέι να αλλάξει η συμπεριφορά της GetMid θα πρέπει να γίνει με hidding (ή shadowing όπως το λέτε εσείς) μια και δεν μπορεί ως static να γίνει override. Το hidding επίσης σε αντίθεση με το overriding επιτρέπει να αλλάξει και το return type της μεθόδου σε κάτι "πιο λογικό" (λιγότερο abstract) για την κάθε περίπτωση. Εφόσον μιλάμε για static method το hidding δεν έχει επίσης τον κίνδυνο να μην κληθεί το new implementation (κίνδυνος που θα υπήρχε αν η GetMid ήταν instance method, όπότε και θα ήταν προτιμότερο το override).

    Anyway. Το MethodBase.GetCurrentMethod().ReflectedType το έβαλα εκεί ως "άσκηση" (ή food-for-thought) και όχι επειδή ήταν απαραίτητο. Αν υποθέσει κανείς ότι θα χρειαστεί να γίνει hide η μέθοδος και ότι το new implementation θα καλέσει το base implementation (σύνολο δύο υποθέσεις/προϋποθέσεις), τότε έχει τον λόγο ύπαρξης που σας ανέφερα σε προηγούμενα posts. Δηλαδή ότι δεν θα αφήσει μια κλήση της GetMid να δημιουργήσει (ενώ κατ' αρχήν ως έχει θα μπορούσε) νέα instances οποιωνδήποτε sub-classes της Mid που δεν βρίκονται κάτω από το ίδιο banch του class hierarchy με εκείνο το οποίο χρησιμοποιήθηκε για να γίνει η κλήση της GetMid. Έστι (με βάση την ονοματολογία που χρησιμοποίησα σε προηγούμενα posts) η κλήση SMid.GetMid(typeof(AMid2)) δεν θα "καρποφορήσει" καθώς η AMid2 δεν είναι sub-class της SMid (ενώ αντίθετα η κλήση Mid.GetMid(typeof(AMid2)) ή η κλήση AMid.GetMid(typeof(AMid2)) θα επιστρέψουν ωραιότατα ένα AMid2 object).

    αυτά...

    φιλικά
    rousso

    υ/γ: χαίρομαι που βοήθησα να γίνει τόσο πολύ συζήτηση για αυτό το θέμα!


    rousso
  •  25-10-2005, 11:19 6408 σε απάντηση της 6170

    Απ: Interface programming

    Παιδιά συγνώμη που επαναλαμβάνομαι αλλά είναι το μόνο που δεν έχω ξεκαθαρίσει :
    Πως τώρα θα φτιάξω ένα serviced component implementation ;


    Πάνος Αβραμίδης
Σελίδα 5 από 5 (65 εγγραφές)   < 1 2 3 4 5
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems