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

 

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

Overriden methods in anonymous types?

Îåêßíçóå áðü ôï ìÝëïò dimos.homatas. Τελευταία δημοσίευση από το μέλος dimos.homatas στις 20-09-2011, 09:02. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  19-09-2011, 10:17 67387

    Overriden methods in anonymous types?

    Καλημέρα σας, 

    παράγω κάποια στιγμή σε ένα function μία λίστα ενός anonymous type, τα οποία και θέλω να προσθέσω σε ένα listbox (winforms).

    Το ερώτημα είναι:

    Μπορώ να προσθέσω ένα override της ToString() ; Έχει καταρχάς το anonymous type την ToString() ;

    Αυτό που θέλω είναι να τα βάλω στο listbox - όταν βάζεις ένα object σε ένα listbox (αντί για string) τότε σαν listitem υπάρχει το object, αλλά σαν εμφάνιση υπάρχει ότι δίνει η ToString()

    Έχω την εντύπωση ότι δεν γίνεται...

    Δοκίμασα μια "χακιά" - έφτιαξα ένα Action<string> ονόματι ToString Big Smile , έλεγα μπας και, αλλά ενώ μπορείς να το καλέσεις από τον κώδικα κανονικά με ToString(), ε, δεν γίνεται η δουλειά!

    Φαντάζομαι ότι κάτι παίζει με την base class του object ή κάτι τέτοιο - μήπως τα anonymous types δεν κάνουν inherit το System.Object...

    Τέλος πάντων, δεν είναι κάτι επείγον, απλά έφαγα το σκάλωμα, καταλαβαίνετε Smile

    "When the darkness rises up from inside - that is normal.
    It's when you reach down to pull it up - that the noxious warnings sound."
    Tuzak, Farscape
  •  19-09-2011, 11:30 67394 σε απάντηση της 67387

    Απ: Overriden methods in anonymous types?

    Η μέθοδος ToString() μπορεί να γίνει override σε οτιδήποτε κληρονομεί από το Object. Κάτι σαν το παρακάτω δεν σου κάνει;

    public class Test<T> where T:class
    {
       public override string ToString()
       {
            return base.ToString(); // ή ό,τι άλλο θέλεις...
       }
    }


    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  19-09-2011, 11:51 67398 σε απάντηση της 67394

    Απ: Overriden methods in anonymous types?

    Έχω anonymous type προερχόμενο από ένα Linq query και θα ήθελα να αποφύγω το να δημιουργήσω νέα κλάση (αν και τελικά αυτό έχω κάνει).
    "When the darkness rises up from inside - that is normal.
    It's when you reach down to pull it up - that the noxious warnings sound."
    Tuzak, Farscape
  •  19-09-2011, 12:07 67399 σε απάντηση της 67398

    Απ: Overriden methods in anonymous types?

    Αυτά τα λένε από την αρχή!! Ειλικρινά, δεν το κατάλαβα από το αρχικό post. Ίσως αυτή η δημοσίευση σου φανεί χρήσιμη.

    [EDIT] => Μια χαρά ανέφερες το anonymous type. Εγώ έπαθα "τύφλωση"...

    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  19-09-2011, 13:46 67404 σε απάντηση της 67399

    Απ: Overriden methods in anonymous types?

    Ε, λίγη τύφλα που και που δικαιολογείται! Ευχαριστώ, θα το τσεκάρω, αν και με μία πρώτη ματιά μου φαίνεται ότι μοιάζει αρκετά με αυτό που έκανα - με την διαφορά ότι έχω ένα property Action<string> και όχι ένα delegate Func<string>. Παρόλα αυτά, δεν ξέρω τι θα συμβεί με το override ToString(). Θα πειραματιστώ και θα επανέλθω.
    "When the darkness rises up from inside - that is normal.
    It's when you reach down to pull it up - that the noxious warnings sound."
    Tuzak, Farscape
  •  19-09-2011, 18:14 67408 σε απάντηση της 67404

    Απ: Overriden methods in anonymous types?

    Δε νομίζω ότι μπορεί να γίνει κάτι. Το documentation το ξεκαθαρίζει:

    In response to the declaration of an instance of an anonymous type, the compiler creates a new class definition that contains the specified properties.

    If the anonymous type contains at least one key property, the definition overrides three members inherited from Object: Equals, GetHashCode, and ToString. The code produced for testing equality and determining the hash code value considers only the key properties. If the anonymous type contains no key properties, only ToString is overridden. Explicitly named properties of an anonymous type cannot conflict with these generated methods. That is, you cannot use .Equals, .GetHashCode, or .ToString to name a property.


    Οπότε το delegate είναι η μόνη σου επιλογή.


    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  20-09-2011, 09:02 67415 σε απάντηση της 67408

    Απ: Overriden methods in anonymous types?

    Είναι αυτό που λέμε "you nailed it"!

    Thanks Μάρκο!

    "When the darkness rises up from inside - that is normal.
    It's when you reach down to pull it up - that the noxious warnings sound."
    Tuzak, Farscape
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems