Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    2

    Istanziare una classe senza conoscerne il nome

    Innanzi tutto buongiorno a tutti.
    Premetto che sono un neofita dei linguaggi OO e sto progettando la mia prima applicazione scritta in C# cercando di imparare da manuali, forum e tuttto ciò che trovo in rete.
    Ho realizzato una FormMdi che fa da contenitore di tutte le altre Form che vengo istanziate alla pressione con il mouse di un ListViewItem(facente parte di ListView contenuta in un pannello della FormMdi). In pratica nella proprietà Tag del ListViewItem scrivo (caricando runtime gli elementi della ListView da un db) il nome della Form da istanziare e di cui effettuare lo show(). Ho letto qualcosa a proposito di alcune classi (Assembly, AssemblyName) che potrebbero fare a caso mio ma nn riesco a venirne a capo. Arrivo fino ad intercettare il ListViewItem selezionato, quindi a ricavarne il tag e da li la stringa che contiene il nome della classe da istanziare. E' un giorno che ci sbatto ( ) la testa.
    Qcuno riesce a darmi una mano?

    grazie
    tommy

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465

    Moderazione

    Il linguaggio anche nel titolo, come da Regolamento.

    Correggo io questo...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Puoi usare la reflection, ma non riesco a capire a cosa può servire istanziare classi di cui non si conosce il tipo a compile-time...
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    2
    Grazie MItaly
    Ho utilizzato questa soluzione:
    Type genericform = Type.GetType(Application.ProductName + "." + sel[i].Tag.ToString());
    Object forminstance = Activator.CreateInstance(genericform);
    ((Form)forminstance).Show();
    Dove il PoductName coincide con il namespace della mia applicazione e sel è un array di ListViewItem selezionati con il mouse

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.