2011-02-15 123 views
0

我想從編譯的C#代碼中訪問COM對象。從C訪問COM dynamicaly#

不可能添加程序集引用並以常規方式「使用」它,任何人都可以指向動態COM查詢示例嗎?

回答

4

您可以使用System.Activator加載COM對象上的蒼蠅,例如:

Type t = Type.GetTypeFromProgID("CDO.Message"); 
object obj = Activator.CreateInstance(t); 

並使用Type.InvokeMember()調用對象的方法。

+0

正是我需要的,這就是所謂的後期綁定,現在我知道;) – guiding5 2011-02-15 05:23:03

0

我知道這將適用於Office COM Interop,不知道任何其他庫。

我希望你的意思是你想使用新的dynamic類型與C#?

您需要使用.NET4無PIA特性:

  1. 添加COM引用,右鍵點擊它。
  2. 點擊屬性。
  3. 而且應該有選項 - > Embed Interop Assembly。 確保其爲真。

現在,如果您注意到,大多數構造函數和方法都會有可選參數,並且某些對象(如我認爲的工作表)將是dynamic類型。

如果你有一個"Interop Type cannot be embedded error"看到這個answer