2010-02-22 1 views
1

Je suis en train de charger un ensemble dynamique et créer une variable de ce type:Charger un ensemble dynamique et créer une variable de ce type

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 
} 

Je travaille sur ce billet depuis passé deux jours toute aide comment je peux déclarer ma variable de type Excel (ce qui est le type que je dois créer)

toute aide serait grand merci

+0

double possible - (http://stackoverflow.com/questions/1137781/ [C# CORRECTEMENT Charger l'Assemblée, et de trouver la classe d'appel Run() Méthode] c-correct-way-to-load-assembly-trouver-class-and-call-run-method) –

Répondre

2

Je ne suis pas certain que cela fonctionne pour cette assemblée, mais en général vous pouvez faire cela en obtenant le type de l'assemblée alors créer l'instance en utilisant Activator.CreateInstance:

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

object instanceOfMyType = Activator.CreateInstance(type); 

vous aurez besoin de connaître le nom du type que vous voulez créer (« Excel.Application »?)

vous pouvez également obtenir directement le type de la dll si vous connaissez le chemin d'accès:

Activator.CreateInstance(assmblyFileName, typeName) 

Je ne suis pas sûr que cela fonctionne pour cette assemblée comme cela est un ensemble COM Interop, donc je pense que vous pourriez avoir à utiliser COM pour y accéder, mais il pourrait .

EDIT:

vous probablement mieux utiliser les méthodes documentées pour ce faire:

Target Office Applications Through Primary Interop Assemblies devrait être un bon endroit pour commencer

0

Pourquoi ne pas ajouter une référence à l'assemblée? Aussi à première vue, vous avez une erreur d'orthographe, vous avez épelé bureau dans Microsoft.officce.interop avec 2 C qui pourrait être la raison pour laquelle si vous avez copié et collé le code.

Voici comment j'utiliser Excel COM:

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

Edit:

Je peux aussi voir que vous avez des problèmes d'espace de noms. L'espace de noms Excel n'existe pas car vous avez précédemment commenté l'espace de noms Excel. Par conséquent, seul le suivant devrait fonctionner.

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

sans:

Excel.officce.interop.excel.applicationClass excel= null 
Questions connexes