Domanda

Sto cercando di caricare un assembly in modo dinamico e creare una variabile di questo tipo:

Assembly Ass= Assembly.LoadFrom(@"d:\abc\microsoft.office.interop.excel.dll");
foreach(Type Excel Assembly.Gettypes())
{
    // here now  Type contains
    // Excel.nameSpace="microsoft.officce.interop.excel"

    // now i need to creae an variable of  type "Excel"

    microsoft.officce.interop.excel.applicationClass excel= null;
    // something like this 
    //Here  Excel is my nameSpace
    Excel.officce.interop.excel.applicationClass excel= null
}

Sto lavorando su questo dal passato due giorni qualsiasi aiuto come posso dichiarare la mia variabile di tipo Excel (che è il tipo ho bisogno di creare)

qualsiasi aiuto sarebbe grande grazie

È stato utile?

Soluzione

Io non sono certo questo lavoro per quell'assemblea, ma in generale si può fare questo ottenendo il tipo dal gruppo quindi creare l'istanza utilizzando Activator.CreateInstance :

Type type = assembly.GetType("MyType");

object instanceOfMyType = Activator.CreateInstance(type);

è necessario conoscere il nome del tipo che si desidera creare ( 'Excel.Application'?)

è anche possibile ottenere il tipo direttamente dal dll se si conosce il percorso ad esso:

Activator.CreateInstance(assmblyFileName, typeName) 

Non sono sicuro che questo funziona per questa assemblea come questo è un assembly di interoperabilità COM, quindi penso che potrebbe essere necessario utilizzare COM per accedervi, ma potrebbe.

EDIT:

si sta probabilmente meglio utilizzando i metodi documentati per fare questo:

applicazioni di destinazione ufficio tramite Primary Interop Assemblies dovrebbe essere un buon punto di partenza

Altri suggerimenti

Perché non aggiungere riferimento all'assembly? Anche a prima vista si dispone di un errore di ortografia, di aver scritto ufficio in microsoft.officce.interop con 2 c di che potrebbe essere il motivo per cui se è stato copiato e incollato il codice.

Ecco come io uso l'Excel COM:

using Excel = Microsoft.Office.Interop.Excel;
Excel.Application excelApp = new Excel.ApplicationClass();

Modifica:

Anche io posso vedere avete problemi di spazio dei nomi. Lo spazio dei nomi di Excel non esiste come lei ha commentato il namespace Excel prima, quindi il seguente da solo dovrebbe funzionare.

Microsoft.Office.Interop.Excel.ApplicationClass excel = null;

senza il:

Excel.officce.interop.excel.applicationClass excel= null
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top