Dal lavoro sulla conversione per la mia azienda applicazione CAD/CAM. Non consiglio di andare dal basso verso l'alto sostituendo la DLL di base o aggiungendo funzionalità di base tramite .NET.
Ho ottenuto risultati molto migliori lavorando dall'alto verso il basso iniziando con la sostituzione di moduli e il passaggio alla DLL principale.
Il più grande ostacolo era fornire una stampante e un'interfaccia grafica adeguate. Ma il rilascio di Microsoft di un kit di compatibilità della stampante ha risolto entrambi i problemi. Fortunatamente quando .NET era solo un barlume all'orizzonte, ho inserito tutte le grafiche VB6 e le chiamate di stampa dietro un'interfaccia.
Ancora una volta iniziare sostituendo il formato con un assembly .NET chiamando le librerie principali COMM.
Se la logica è intrecciata con i moduli, consiglio vivamente di separarla in una nuova DLL COM IN VISUAL BASIC SIX. Avere la nuova DLL interagire con il modulo tramite un'interfaccia. Il modulo sarà una shell sottile che passa eventi alla DLL ed esegue varie operazioni (disegno, riorganizzazione, ecc.
Se non è possibile evitare l'utilizzo dell'assembly .NET per fornire nuove funzionalità, creare una serie di ben definiti e interfacce limitate per controllare l'interazione tra lato .NET e lato VB6/COM
Ad esempio, volevamo aggiungere software per ufficio/gestione del lavoro per il nostro settore alla gamma di software che vendiamo. il framework .NET.Doveva interagire con il nostro software CAD/CAM e così abbiamo creato una serie di interfacce in cui ognuno può raccogliere le informazioni necessarie o attivare l'azione l'una dall'altra.
Infine, se le classi .NET implementano interfacce COM, il grande trucchetto è che è necessario assicurarsi che tutti i parametri che fanno parte delle proprietà in COM debbano essere dichiarati ByVal o .NET non saranno in grado di implementare la proprietà e fallire per implementare l'interfaccia. Questo include il parametro valore di un Let o Set
fonte
2008-12-18 13:15:38
Giù vota tutto ciò che si desidera, ma l'utilizzo di raccolte .NET ecc. Come routine da VB6 * veramente * non è una buona idea. –