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

 

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

Εντοπισμός αν μια virtual μέθοδος έχει γίνει τελικά overriden

Îåêßíçóå áðü ôï ìÝëïò Dimitris Papadimitriou. Τελευταία δημοσίευση από το μέλος Νατάσα Μανουσοπούλου στις 27-11-2006, 18:37. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  27-11-2006, 17:57 21279

    Εντοπισμός αν μια virtual μέθοδος έχει γίνει τελικά overriden

    Κάτι μου λέει ότι η απάντηση είναι όχι, αλλά ας το ρωτήσω...
    Υπάρχει τρόπος, έστω και μεσω reflection, να καταλάβω αν μια κλάση έχει κάνει override μια virtual μέθοδο μιας άλλης κλάσης που κληρονομεί;


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  27-11-2006, 18:06 21280 σε απάντηση της 21279

    Απ: Εντοπισμός αν μια virtual μέθοδος έχει γίνει τελικά overriden

    Κάτι βρήκα:
    MyBaseClass c = new MyDerivedClass();
    Type t = c.GetType();
    if (t.GetMember("MyVirtualMethod")[0].DeclaringType.Name == t.Name)
        // method override
    else
        // method not overriden

    σωστό;
    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  27-11-2006, 18:11 21281 σε απάντηση της 21280

    Απ: Εντοπισμός αν μια virtual μέθοδος έχει γίνει τελικά overriden

    ή καλύτερα
    if (t.GetMethod("Test").DeclaringType == t) ......

    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  27-11-2006, 18:12 21282 σε απάντηση της 21281

    Απ: Εντοπισμός αν μια virtual μέθοδος έχει γίνει τελικά overriden

    ...λέτε να παραμιλάω και στον ύπνο μου και να μην το ξέρω;;!!
    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  27-11-2006, 18:37 21286 σε απάντηση της 21281

    Απ: Εντοπισμός αν μια virtual μέθοδος έχει γίνει τελικά overriden

    Εδώ υπάρχει το εξής catch: αν η μέθοδος αντί για override είναι new, τότε θα την θεωρήσεις overriden ενώ στην πραγματικότητα δεν είναι. Μπορείς να κάνεις το εξής: Να κάνεις
    t.GetMethod("test", BindingFlags.DeclaredOnly)
    για να πάρεις την τυχούσα overriden μέθοδο. Αν επιστρέψει null, τότε δεν είναι overriden. Αν δεν επιστρέψει null, ελέγχεις το IsHideBySig property. Προσοχή όμως, διάβασε το documentation του γιατί έχει διαφορετική συμπεριφορά για VB και C#.

    Νατάσα Μανουσοπούλου
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems