2013-04-22 96 views
4

我們可以在F#中嵌入互操作類型嗎?在F#中嵌入互操作類型#

首先,我沒有看到在引用中這樣做的選項。

其次,如果我嵌入在C#中的類型,它告訴我引用的接口,而不是具體類:

//DBEngine is the interface DBEngineClass is the concrete class 

//if I dont embed the interop 

//Valid 
var dbe = new Microsoft.Office.Interop.Access.Dao.DBEngineClass(); 
//Valid 
var dbe = new Microsoft.Office.Interop.Access.Dao.DBEngine(); 


//if I do embed the interop 
//Invalid 
var dbe = new Microsoft.Office.Interop.Access.Dao.DBEngineClass(); 
//Valid 
var dbe = new Microsoft.Office.Interop.Access.Dao.DBEngine(); 

然而,F#一直想擁有的具體類的引用。 有沒有辦法解決這個問題?

回答

1

也許我不明白你的問題,但這個工作得很好,引用v14.0:

open Microsoft.Office.Interop.Access.Dao 
let dbe = DBEngineClass() :> DBEngine 
+0

確實如此,但您仍然指示二進制文件實際綁定到版本v14.0特定的類。 COM有這種接口的概念,現在顯然在C#中語言層面出現。這就是爲什麼你可以新建一個界面! – nicolas 2013-04-23 13:48:02

+0

這個想法是,我不在乎哪個客戶端庫將實現接口。我將這種通用性推向了負責遵守它的運行時。 – nicolas 2013-04-23 13:49:04

2

劉濤談論你從F#做發現正確的類實例化一些額外的工作here。據我所知,沒有辦法嵌入互操作類型。我會很高興被證明是錯誤的。 :)

相關問題