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

 

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

Inheritance

Îåêßíçóå áðü ôï ìÝëïò gspiros. Τελευταία δημοσίευση από το μέλος Dimitris Papadimitriou στις 29-03-2009, 20:32. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  28-03-2009, 21:35 49668

    Inheritance

    Έχω το εξής:

    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace ConsoleApplication7
    {
        class BaseClass
        {
            public int a;
        }
        class Class : BaseClass
        {
            public int b;
        }
       
        class Program
        {
            static void Main(string[] args)
            {
                BaseClass cl = new Class();

                cl = cl as Class;

            }
        }
    }
    Θέλω από το αντικείμενο cl, να πάρω το property b.
    Πως θα κάνω το cast στην child class (Class), ώστε να πάρω αυτό το property?
    Στο debug του vs, φαίνεται το property b μέσα από το cl.
    Δημοσίευση στην κατηγορία:
  •  28-03-2009, 22:00 49669 σε απάντηση της 49668

    Απ: Inheritance

    Γιατί κάνεις BaseClass cl = new Class(); κι όχι Class cl = new Class(); κατευθείαν;
    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  28-03-2009, 22:14 49670 σε απάντηση της 49669

    Απ: Inheritance

    Βασικά έχω μια method που δέχεται σαν όρισμα base class, ώστε να μπορώ να περάσω σε αυτήν οποιοδήποτε αντικείμενο που κληρονομεί από την base class (υπάρχουν αρκετά).
    Μέσα σε αυτήν την method λοιπόν, γίνονται τα υπόλοιπα αναλόγως τι τύπου είναι το αντικείμενο που περνάω μέσα.
    Κάθε αντικείμενο έχει διαφορερικά properties, τα οποία τα χρειάζομαι.
  •  28-03-2009, 23:40 49671 σε απάντηση της 49670

    Απ: Inheritance

    Θα μπορούσες να χρησιμοποιήσεις generics γι'αυτό το οποίο θέλεις να κάνεις. Επίσης θέλεις να μας πείς λίγο ακριβώς τι ειναι το concept ώστε να δούμε εάν υπάρχει και κάποια καλύτερη υλοποίηση (σε σχέση με το Inheritance);


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  29-03-2009, 17:43 49678 σε απάντηση της 49671

    Απ: Inheritance

    Σου είπα τι θέλω να κάνω!
    Υπάρχει μια μέθοδο η οποία έχω βάλει να παίρνει σαν όρισμα base class, ώστε να δέχεται κάθε child class (υπάρχουν πολλά children classes).
    Μέσα σε αυτήν την μέθοδο λοιπόν, θέλω να παίρνω τα properties κάθε child αντικειμένου (διαφορετικά properties για κάθε child - μερικά είναι ίδια...).
    Κατά το debug, τα properties αυτά φαίνονται, οπότε θα υπάρχει τρόπος να τα δω και προγραμματιστικά, ίσως μετά από κάποιο cast!
  •  29-03-2009, 20:00 49681 σε απάντηση της 49678

    Απ: Inheritance

    Ωραία, ας το ρωτήσω αλλοιώς τότε.. Πως θα ξεχωρίζεις εσύ ποια class είναι κάθε φορά; Εάν είναι να κάνεις cast γιατί να μην χρησιμοποιήσεις generics ώστε να αποφύγεις το cast;


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  29-03-2009, 20:32 49682 σε απάντηση της 49678

    Απ: Inheritance

    Μπορείς να πεις τι θέλεις να κάνεις μέσα σε αυτή την μέθοδο;

    Πως σου φαίνεται αυτό;... Προφανώς η GetValues μπορεί να επιστρέφει object[] αντία για int[] αν τα properties δεν είναι του ίδιου τύπου.

    Αυτή την GetValues θα καλεί η μέθοδός σου, θα παίρνει ένα array από τις τιμές που έχει η κάθε κλάση και θα κάνει τη δουλειά της. Πες όμως ποια είναι η δουλειά της μήπως και χρειάζεσαι κάποιο άλλο καλύτερο interface.

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace ConsoleApplication7
    {
        class BaseClass
        {
            public int a;
            public abstract int[] GetValues();
        }
        class Class : BaseClass
        {
            public int b;
            
            public override int[] GetValues()
            {
                    return new int[] { this.b };
            }
        }
        
        class Program
        {
            static void Main(string[] args)
            {
                BaseClass cl = new Class();
    
                cl = cl as Class;
    
            }
        }
    }

    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

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