Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C#] Assembly.LoadFrom e Activator.CreateInstance

    Holaz

    sto scrivendomi un piccolo sistema per caricare dinamicamente dei moduli che hanno una precisa interfaccia

    tramite la classe Assembly carico il necessario e poi creo un instanza facendo il type casting sull'interfaccia ... in quesot modo posso richiamare i metodi che mi servono e che sono presenti di default

    però volevo fare un qualcosa di più flessibile

    vediamo se l'idea che propongo va bene

    Premessa
    le assembly devono essere in grado di crearmi form, eseguire connessioni al database e alla porta seriale e cosi via ... quindi al metodo che ho chiamato ModuleInitialize (un pseudo costruttore) passo tutte le classi necessarie per fare quello che deve fare e gli faccio distruggere tutto in un pseudo dispose chiamato ModuleStop. Dopo di che il modulo vero e proprio parte lanciando ModuleStart

    ModuleStart e ModuleStop mi servono per risparmiare memoria ... se dovessi caricare TUTTI i moduli instanziando tutto il necessario all'avvio occuperei un sacco di memoria inutile invece tramite appositi metodi

    ----
    A me serve dunque recuperare dei menu da aggiungere ... e pensavo di farmi passare o direttamente gli oggetti da aggiungere tramite un'apposito metodo, ma sarebbe limitante, infatti ho una barra a sinistra stile exporer al quale vorrei aggiungere dinamicamente elementi generati dagli utenti. In alternativa potrei fare un'altra cosa farmi ritornare un elenco di struct che leggo e aggiungo ... oppure, sempre con i menu ... ma poi ci lavoro su e mi aggiungo il necessario nella explorer bar

    che ne dite?

    (sempre se avete capito qualcosa )

  2. #2
    siccome mi sono reso che mi sono espresso come una mucca (per farmi un complimento) ci riprovo

    ---------------

    allora ... a me servirebbe un sistema per caricare (e non scaricare, quindi possono rimanere nello stesso dominio) degli assembly esterni che uso come moduli

    al momento faccio questo
    codice:
    objTmpAssembly = Assembly.LoadFrom(this.ModulesPath + "LabSoft.Modules.Module." + ModuleName + ".dll");
    objTmpModule = (IModule)objTmpAssembly.CreateInstance("LabSoft.Modules.Module." + ModuleName + "." + ClassName);
    carico l'assembly e creo un'instanza della classe che mi serve facendo un tipecasting tramite la classe l'interfaccia che implementa il modulo
    a questo punto posso chiamare i metodi che ho definito nella classe ...

    codice:
    objTmpModule.ModuleStart();
    e questo funziona perfettametne!

    Il prossimo step sarà quello di creare un ModuleInit o ModuleInitialize dove passerò gli oggetti necessari per far lavorare il modulo anche sull'interfaccia grafica del form principale.

    Premessa
    non mi servono che i moduli comunichino tra loro e vorrei mantenere la cosa sul più semplice possibile dato che ancora non è che mi muovo tanto bene con queste cose, anche se imparo abbastanza in fretta ^^


    quindi mi chiedevo:
    - siccome si serve aggiungere dei menu al form principale, mi faccio restutire un array che aggiungo semplicemente al menu che mi interessa? oppure mi faccio restituire un'array che contiene un elenco di struct con le informazioni che mi servono per costruire poi l'array?

    - Se dovessi utilizzare il secondo sistema come faccio a richiamare i metodi dell'assembly per come serve? Creo un metodo nell'interfaccia che si occupa di smistarmi le operazioni che richiedo e passo un array di object come parametri, esempre lo stesso metodo si occupa di smistare correttamente i parametri ai vari metodi interi richiesti da fuori?

    - Mi serve anche permette l'aggiunta dinamica di alcuni "link" ad una lista ... lista che vorrei far generare all'utente partendo dai menu. Avete qualche idea?

    [edit]
    ho aggiunto il metodo ModuleInit e quindi adesso è anche possibile passare oggetti ai moduli, o per meglio dire parametri in maniera standard

  3. #3
    nessuno c'ha capito nulla o sono io che mi spiego nu skif


    up

  4. #4
    faccio l'ultimo up

    ma nessuno ha qualche idea?

  5. #5
    Utente di HTML.it L'avatar di X_Gold*
    Registrato dal
    Nov 2004
    Messaggi
    445
    Originariamente inviato da daniele_dll
    faccio l'ultimo up

    ma nessuno ha qualche idea?

    forse non ho capito niente pero' mi chiedo ma gli assembli che carichi sono dei form ? e tu li vuoi integrare dentro un form "padre" ?
    Salve, sono Folder... Mox Folder , e questa è la mia collega Dana Shell(y) , insieme lavoriamo su i misteri di *.files, da quando gli alieni hanno rapito mia sorella (Mdb-Database Folder) il nostro impegno per sopprimerli da tutti i pc ed eliminare i file corrotti è diventato concreto.

    Insieme formiamo gli X_Gold.

  6. #6
    maLOL

    ehm ... diciamo che nel 90% dei casi sono questo ... ma questo è facile da fare

    non mi preoccupa minimamente

    basta passarmi per riferimento l'oggetto form principale al modulo ... e in questo modo l'altro form lo faccio comparire in quello padre

    solo che io volevo in pratica dei consigli sull'architettura che sto usando ... programmo in c# da qualche settimana e non più :\

  7. #7
    c'è lo fatta

    il mio micro sistema a moduli è quasi completo (devo scrivere un sistema per caricare dinamicamente la configurazione e passarla al plugin e poi ho finito)

    poi appena finisco lo posto (forse c'arrivo anche stasera a farlo)

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.