日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用 COM 风格的编程接口

發布時間:2025/5/22 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用 COM 风格的编程接口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用COM 風格的編程接口

?

假設不直接使用 COM 庫。不創建自己的包裝。那么更可能的是使用 COM 風格的編程接口。這是由于如今很多開發商公布應用程序時。提供了首選的互操作程序集(Primary Interop Assemblies)。這是預先創建的 COM 包裝,因此,我們就不須要再自己考慮用 TlbImp.exe 來創建包裝了。

?

注意

很多其它有關首選的互操作程序集的內容。能夠在 MSDN 上找到。http://msdn.microsoft.com/en-us/library/aax7sdch.aspx 。

?

?

盡管首選的互操作程序集本質上就是 .NET 程序集,可是,通常有一些特殊的地方須要注意。比方:

某些數組和集合常常從 1 開始,而不是 0。

常常有一些方法,會有大量的可選參數;

很多屬性和方法會返回對象(object)類型,產生的結果對象須要強制轉換成真正的類型;

COM 類包括非托管的資源。須要處理(dispose)。然而,這些類沒有實現標準的 .NET IDisposable 接口,因此。在 F# 的 use 綁定中就不能使用;只是。我們可以使用 F# 的對象表達式非常easy地就實現了 IDisposable。

F# 和 COM 進行交互與 C# 的關鍵不同在于,我們必須總是要創建對象的實例。而非接口。這聽趚有點奇怪,可是,在 COM 庫中,每個對象通常都有一個接口,有一個實現接口的類。在 C# 中,假設使用keyword new 嘗試創建 COM 接口的實例,的COM posablesable 編譯器會自己主動定向到(redirect)調用相應的類,而在 F#中就不是這樣。

與 Microsoft Office 交互可能是使用 COM 風格庫的最常見理由。

以下的清單是讀取 Excel 電子表格的信息。

?

open System

open Microsoft.Office.Interop.Excel

?

let main() =

? // initalize an excel application

? let app = new ApplicationClass()

?

? // load a excel work book

? let workBook =app.Workbooks.Open(@"Book1.xls",ReadOnly = true)

?

? // ensure work book is closed corectly

? use bookCloser ={ new IDisposable with

??????????????????????member x.Dispose() = workBook.Close() }

?

? // open the first worksheet

? let worksheet =workBook.Worksheets.[1] :?> _Worksheet

?

? // get the A1 ceel and all surround cells

? let a1Cell =worksheet.Range("A1")

? let allCells =a1Cell.CurrentRegion

? // load all cells into a list of lists

? let matrix =

??? [ for row inallCells.Rows ->

????? let row = row:?> Range

????? [ for cell inrow.Columns ->

?????? ?let cell = cell :?

> Range

??????? cell.Value2] ]

?

? // close the workbook

? workBook.Close()

?

? // print the matrix

? printfn "%A" matrix

?

do main()

?

注意這個演示樣例是怎樣處理我們前面提到的特殊地方的。我們實現了 IDisposable 并把它綁定到 bookCloser,保證即使在出錯的情況下也能關閉工作簿。Open 方法有 15 個參數。可是。我們僅僅用了兩個:.Open(@"Book1.xls", ReadOnly = true)。第一個工作表的索引 1:workBook.Worksheets.[1];終于,每一行必須被強制轉換起來(upcast)能夠使用:let row = row :?> Range。






總結

以上是生活随笔為你收集整理的使用 COM 风格的编程接口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。