我正在VS 2010中工作,並將我們的應用程序升級到.NET 4.應用程序是以Excel爲基礎構建的,我們希望利用.NET對於使用Excel的一些改進。但是我遇到了一個奇怪的錯誤,這似乎是由通用字典中使用Excel Interop對象造成的。這裏是產生差錯:我們無法在.NET 4.0中的泛型對象中使用Interop對象嗎?
C:\MyApp\TheAssembly\MyClass.cs(823,57):
error CS1769: Type 'MyApp\OtherAssemply.IMyController.SheetReports' from assembly 'c:\MyApp\OtherAssemply.\bin\Debug\OtherAssembly.dll'
cannot be used across assembly boundaries because it has a generic type
parameter that is an embedded interop type.
下面是有問題的實際屬性:
Dictionary<Excel.Worksheet, IReportSheet> SheetReports { get;}
難道我們不能在通用對象使用互操作的對象?如果是這樣,這是.NET 4.0中的一個嚴重限制。我嘗試將Embed Interop屬性設置爲false,但這似乎沒有改變任何內容。請讓我知道是否有這個問題。
乾杯!
埃裏克
阿德里安, 這就是我想通了,所以感謝您的確認。我最終不得不在整個解決方案中關閉嵌入。我正在研究一些方法,但沒有時間去嘗試。也許某種界面?讓我知道你的想法。 謝謝! – Erick 2009-12-01 17:35:38
我能想到的唯一方法就是創建某種裝配關聯(如STA線程模型)。你可以通過將它們作爲對象轉換來傳遞互操作對象,但只要你需要訪問它們,你就必須從創建它們的程序集中調用它。另一方面,在辦公室使用互操作程序集有什麼不對?無論如何,它們將在用戶機器上,因爲它們是正常安裝的一部分。你不會從嵌入式互操作中獲得任何東西。 – adrianm 2009-12-02 07:23:58
正確。嵌入並不是那麼美妙。爲了使用互聯網,用戶必須擁有Office的許可副本。大多數將有PIA預先安裝的Office 2007 ...:D – 2010-02-25 04:48:51