2010-09-16 83 views
2

我在閱讀Silverlight 4 in Action並同時嘗試使用示例。但是,我似乎無法理解新的dynamic關鍵字,爲什麼它需要COM。這是我的代碼: -對於動態關鍵字沒有intellisense?

if (AutomationFactory.IsAvailable) 
      { 
       dynamic excel = 
       AutomationFactory.CreateObject("Excel.Application"); 
       excel.Visible = true; 
       dynamic workbook = excel.workbooks; 
       workbook.Add(); 
       dynamic sheet = excel.ActiveSheet; 
       int i = 1; 
       double[] data = new double[] { 1.0, 5.0, 9.5, 2.7, 3.2, 0.6 }; 
       foreach (double d in data) 
       { 
        dynamic cell = sheet.Cells[i, 1]; 
        cell.Value = "Row " + i; 
        cell.ColumnWidth = 10; 
        cell = sheet.Cells[i, 2]; 
        cell.Value = d; 
        i++; 
       } 
       dynamic shapes = sheet.Shapes; 
       shapes.AddChart(-4100, 120, 2, 300, 200); 
      } 

我想知道如何做了筆者來到知道,形狀支持AddChart方法和他怎麼知道哪些參數,他需要傳遞給這個功能呢?有人可以對此有所瞭解嗎?

在此先感謝:)

+1

作者可能RTFM。然後再次寫入代碼,首先添加Microsoft.Office.Interop.Excel引用,然後編輯它以使用* dynamic *將是另一種方法。 – 2010-09-16 13:36:56

回答

5

COM不需要它。但是,不使用dynamic的代碼真是一團糟。

至於作者如何知道有什麼方法可用,他閱讀了Excel VBA文檔。查看Excel類型庫也會告訴你方法簽名,但沒有解釋。

0

「的方法和他怎麼知道哪些參數,他需要傳遞給這個功能嗎?」

他可能編碼或閱讀文檔。

3

動態基本意味着你不知道在編譯時你將使用什麼類型(或者有時類型甚至不存在)。因此缺乏智能感知。

對於動態對象,您只需調用一個方法,引入一些參數,並且如果具有該簽名的精確方法存在,DLR將會調用它。

如果它不存在,你會得到一個運行時異常。