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

 

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

createinstance arguments

Îåêßíçóå áðü ôï ìÝëïò zaxos. Τελευταία δημοσίευση από το μέλος Νατάσα Μανουσοπούλου στις 07-11-2005, 17:11. Υπάρχουν 1 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  07-11-2005, 16:34 6821

    createinstance arguments

    Καλησπέρα σε όλους.

    Αντιμετωπίζω ένα πρόβλημα στο οποίο θα ήθελα τη βοήθεια σας.

    Εχω ένα control το οποίο at runtime δημιουργεί ένα usercontrol.Tο όνομα του usercontrol καθώς και τις μεταβλητές που παίρνει κατά τη δημιουργία του τα λαμβάνω επίσης  at runtime . Εχω τις εξής string μεταβλητές:

     nameofcontol το όνομα του control 

     nameofcontrol = "usercontrol1"

    param1 η πρωτη μεταβλητή που πρέπει να περάσω στο control

    param1 = "sqladapter1.sqlcommand.connection.connectionstring"

    param2 η δεύτερη μεταβλητή που πρέπει να περάσω στο control

    param2 = "dataset1"

    όπως καταλαβαίνετε αυτά που έχω στην φόρμα που δημιουργεί αυτό το control είναι το dataset που θέλω να περάσω στο control καθώς και το connectionstring του adapter.

    Αυτή είναι μια διαδικασία που θέλω να γίνεται για το οποιοδήποτε control άσχέτως ονόματος ή παραμέτρων για τη κατασκευή του( τα παραπάνω τα παραθέτω ώς παράδειγμα.)

    Φαντάστικα λοιπον ότι πρέπει να κάνω το εξής

    dim arg as object

    Dim usrctrl As New UserControl

    usrctrl = Activator.CreateInstance(nameofcontrol, arg)

    το usercontrol έχει στο new(str as string,ds as dataset)

    πώς μπορώ να περάσω στα arguments τις string μεταβλήτες μου param1,param2?

  •  07-11-2005, 17:11 6823 σε απάντηση της 6821

    Απ: createinstance arguments

    Θέλεις κάτι του τύπου:

    object obj = assembly.CreateInstance(
       strClass, // όνομα κλάσης
      
    false// ignore case
       BindingFlags.Instance|BindingFlags.Public|BindingFlags.NonPublic,
       null// binder
       a_arguments,
      
    null// culture
       new object[0]);

    Όπου assembly το object τύπου System.Reflection.Assembly που περιέχει την κλάση με τον τύπο σου και strClass το πλήρες όνομα της κλάσης σου. Αν είναι στην ίδια assembly με τον κώδικα που τρέχει, είναι η System.Reflection.Assembly.GetExecutingAssembly().

    Το a_arguments είναι object array με τα ορίσματα του constuctor. Οι μετατροπές μεταξύ των τύπων γίνονται με τη βοήθεια της προτελευταίας παραμέτρου που είναι τύπου CultureInfo.

    Παρατήρησε ότι έτσι μπορείς να καλέσεις και ctors που δεν είναι public.


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