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

 

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

Cast generic classes

Îåêßíçóå áðü ôï ìÝëïò Dimitris Papadimitriou. Τελευταία δημοσίευση από το μέλος pontifikas στις 12-03-2010, 12:55. Υπάρχουν 18 απαντήσεις.
Σελίδα 2 από 2 (19 εγγραφές)   < 1 2
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  22-02-2009, 23:09 48634 σε απάντηση της 48630

    Απ: Cast generic classes

    Dimitris Papadimitriou:
    Ευχαριστώ όλους για τη συμμετοχή!
    Το μόνο που ίσως πρέπει να προσθέσω ότι το signature της Dummy δεν μπορεί να έχει generic καθώς δεν ξέρω εκ των προτέρων τον τύπο που θα περάσει κανείς. Μπορεί να είναι Dummy(object) ή Dummy(Cage).

    Ε, αυτό είναι που δεν καταλαβαίνω. Αφού ΔΕΝ χρειάζεται να περάσεις τον τύπο με τα generics! Έτσι και γράψεις Dummy<T> where T:Animal είσαι εντάξει.  Ή μήπως δεν θέλεις να ορίσεις ούτε καν την Animal? Οι διάφοροι τύποι (Animal, Tiger κλπ) δεν έχουν καμμία σχέση μεταξύ τους?

    Όσο για λύση χωρίς generics, υπάρχουν αρκετές, φτάνει να ξέρουμε ποιό είναι το πρόβλημα. Καταρχήν, μπορείς να έχεις μία overloaded Dummy για κάθε τύπο. Μπορείς επίσης να χρησιμοποιήσεις το Visitor pattern και τις παραλλαγές του, το οποίο σου επιτρέπει να καλέσεις διαφορετικό κώδικα για κάθε τύπο παραμέτρου χωρίς να τον προσδιορίζεις στον κώδικα. Αλλά το αν ταιριάζει ή όχι, μπορεί κανείς να το καταλάβει μόνο αν περιγράψεις το πρόβλημα.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  22-02-2009, 23:25 48636 σε απάντηση της 48634

    Απ: Cast generic classes

    Εκτός αυτού, δε θα χρειαζόταν κανενός είδους type checking, αλλά ούτε και λόγος κλήσης του Cage, αν υπήρχε ένα Ration object (αποτελούμενο από Feeds και Quantities) που περνούσε σαν παράμετρος στην PutFood. Δε θα μας ενδιέφερε καν το είδος του ζώου. Έτσι όπως περιγράφεται το μοντέλο, είναι μάλλον προβληματικό. Φαίνεται σα να ταΐζει το κλουβί το ζώο. Δηλαδή σα να πληρώνει τον εργαζόμενο το γραφείο που κάθεται. Μήπως το όλο concept χωλαίνει στην ανάλυση και όχι στην υλοποίηση; Μάλλον πρέπει ο Δημήτρης να περιγράψει το πρόβλημα καλύτερα.
    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  12-03-2010, 12:41 57638 σε απάντηση της 48609

    Απ: Cast generic classes

    Θα ήθελα να ρωτήσω αν βρήκε κανείς άκρη με αυτό διότι έχω το ίδιο πρόβλημα.
    Μάλιστα θα αναφερθώ στον κώδικα που έγραψε ο Μάρκος. Έχω μια παρόμοια συνάρτηση Dummy μόνο που όταν πάω να γράψω κώδικα να την καλέσω,
    το auto-complete δεν με αφήνει να δώσω ορίσματα αν δεν βάλω τον Τυπο πριν την παρένθεση. Δηλ:
    public class GLighter_VBO<T> where T: struct
    {  
    }
    
    public class GLighter_VAO
    {
             public void BindVBO<U>(uint AttributeIndex, GLighter_VBO<U> VBObject) where U : struct
            {
             }
    }
    
    public class ClassA
    {
               public GLighter_VBO<double> dVBO = new GLighter_VBO<double>();
    }
    
    public class ClassB
    {
    public void Func(VAO v, Class A)
    {
         //Εδω θέλω να περάσω το dVBO της Α
         v. BindVBO<........
    }
    }
    Το θέμα είναι ότι εγώ δεν θέλω να ξέρω τι τύπου είναι το dVBO που περιέχεται μέσα στην Α.  Δεν ξέρω και δεν θέλω να ξέρω ότι είναι double διότι μπορεί να κληθέι από κάποιου αλλού που το dVBO να είναι uint.


  •  12-03-2010, 12:55 57639 σε απάντηση της 57638

    Απ: Cast generic classes

    pontifikas:
    Θα ήθελα να ρωτήσω αν βρήκε κανείς άκρη με αυτό διότι έχω το ίδιο πρόβλημα.
    Μάλιστα θα αναφερθώ στον κώδικα που έγραψε ο Μάρκος. Έχω μια παρόμοια συνάρτηση Dummy μόνο που όταν πάω να γράψω κώδικα να την καλέσω,
    το auto-complete δεν με αφήνει να δώσω ορίσματα αν δεν βάλω τον Τυπο πριν την παρένθεση. Δηλ:
    public class GLighter_VBO<T> where T: struct
    {  
    }
    
    public class GLighter_VAO
    {
             public void BindVBO<U>(uint AttributeIndex, GLighter_VBO<U> VBObject) where U : struct
            {
             }
    }
    
    public class ClassA
    {
               public GLighter_VBO<double> dVBO = new GLighter_VBO<double>();
    }
    
    public class ClassB
    {
    public void Func(VAO v, Class A)
    {
         //Εδω θέλω να περάσω το dVBO της Α
         v. BindVBO<........
    }
    }
    Το θέμα είναι ότι εγώ δεν θέλω να ξέρω τι τύπου είναι το dVBO που περιέχεται μέσα στην Α.  Δεν ξέρω και δεν θέλω να ξέρω ότι είναι double διότι μπορεί να κληθέι από κάποιου αλλού που το dVBO να είναι uint.




    Συγγνώμη άκυρο......τελικά το δέχτηκε και δουλεύει μια χαρά.....!!!
Σελίδα 2 από 2 (19 εγγραφές)   < 1 2
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems