接口真的不能被實例化?

在作導出Excel時,有一行代碼
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();app

new了一個接口,編譯器也報錯,並且運行正確。函數

 

此接口定義:ui

namespace Microsoft.Office.Interop.Excel
{
    [CoClass(typeof(ApplicationClass))]
    [Guid("000208D5-0000-0000-C000-000000000046")]
    public interface Application : _Application, AppEvents_Event
    {
    }
}

 

谷歌之:spa

NET提供Interop 程序集,它用做託管和非託管代碼之間的橋樑,將 COM 對象成員映射爲等價的 .NET 託管成員。.net

在.net裏面非託管轉換成託管的接口用CoClass標記接口轉換成類,因此excel.application 實例化是能夠的。excel

 

 

還有一種替代此行代碼的方法,
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();對象

類型「Microsoft.Office.Interop.Excel.ApplicationClass」未定義構造函數    
沒法嵌入互操做類型「Microsoft.Office.Interop.Excel.ApplicationClass」。請改用適用的接口。blog

解決辦法是將引用的DLL:Microsoft.Office.Interop.Excel;的嵌入互操做類型改成false,就能夠了。接口

相關文章
相關標籤/搜索