2010-02-22 74 views
1

我試圖動態加載的程序集的類型的變量,並創建其類型的變量:我對這個工作從過去的2天任何幫助,我怎麼能動態加載程序集,並創建

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 
} 

聲明我喜歡的類型的Excel(這是我需要創建的類型)

任何幫助將是巨大的變量 謝謝

+0

可能重複[C# - 正確的方式來加載組件,查找類並調用run()方法(http://stackoverflow.com/questions/1137781/ C-正確的路至負荷組裝找到級和呼叫運行法) – 2010-09-15 06:22:32

回答

2

我不能肯定這將爲該組裝工作,但一般你可以做這是通過從程序集中獲取類型創建使用實例Activator.CreateInstance

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

object instanceOfMyType = Activator.CreateInstance(type); 

你需要知道你要創建的類型名(「Excel.Application」?)

,你也可以直接從DLL獲得類型如果你知道它的路徑:

Activator.CreateInstance(assmblyFileName, typeName) 

我不知道這會爲本屆大會的工作,因爲這是一個COM互操作程序集,所以我想你可能必須使用COM來訪問它,但它可能。

編輯:

Target Office Applications Through Primary Interop Assemblies應該是開始

0

爲什麼不加參考組裝的好地方:你可能更好地利用這樣做的所記錄的方法

?同樣乍一看,你有一個拼寫錯誤,你用microsoft.officce.interop拼寫了2 c的辦公室,這可能是你爲什麼複製和粘貼代碼。

這是我如何使用Excel COM:

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

編輯:

我也能看到你的命名空間的問題。命名空間Excel在您之前註釋掉Excel命名空間時不存在,因此以下內容應該可以工作。

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

而不:

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