352 messaggi dal 08 febbraio 2009
Salve a tutti.

Stavo provando a creare un BIZ che si appoggia ad un DAL caricandolo "a runtime".
La prova che volevo fare è quella di vedere se il mio BIZ è realmente disaccoppiato dal DAL.

Per farlo, il BIZ carica il DAL a runtime usando la Reflection:


       private IDalContext _dal;
       private object sync = new object();

        public IDalContext Dal
        {
            get
            {
                if (_dal.IsNull())
                {
                    lock (sync)
                    {
                        if (_dal.IsNull())
                        {
                            _dal = ClassLoader.LoadClass(Configuration.DalAssemblyPath, Configuration.DalClassName) as IDalContext;
                        }
                    }
                }
                return _dal;
            }
        }




In pratica nel file di configurazione (app.config) imposto il percorso completo della DLL che implementa IDalContext e il nome completo della classe.

Tutto funziona quando mi appoggio ad un DAL che lavora con degli oggetti caricati da codice (il classico DAL di esempio che non accede ad alcun DB).

Nel momento in cui gli associo un DAL che accede al DB, mi esce con errore perchè non riesce a caricare le librerie a cui ho fatto riferimento nel DAL (ad esempio quelle specifiche per il DB).

Pensavo di aver strutturato bene le classi per essere disaccoppiato al massimo, però così facendo nel BIZ devo aggiungere il riferimento a tutte le librerie usate nel DAL (ma non mi va bene).

Quando carico un Assembly a runtime (come ho fatto sopra), come faccio a dirgli di caricarsi lui le proprie dipendenze? Nel mio caso specifico nella directory in cui si trova l'assembly del DAL ci sono anche tutte le dll da cui deriva.

Solo che la mia applicazione (che risiede altrove) non le vede.


Spero di essere stato chiaro nella spiegazione.
Grazie mille
Basta che siano presenti nella cartella dell'applcazione, non è necessaria la reference a compile time.

Ciao!
352 messaggi dal 08 febbraio 2009
Fatto così sembra funzionare, però nella cartella di deploy mischio le DLL, quindi rimane "poco pulita".

Non è possibile impostare una serie di directory da cui andare a prendere le DLL dal file di configurazione?

Qualcosa del tipo: PercorsoDLL="..;C:\DalPath;C:\BizPath" ?

Grazie mille

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC