在F#中嵌入互操作类型

时间:2013-04-22 14:00:13

标签: com f# com-interop

我们可以在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#总是希望引用具体类。 有办法解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

刘涛谈到你要从F#做一些额外的工作,以发现正确的班级来实现here。据我所知,没有办法嵌入互操作类型。我很高兴被证明是错的。 :)

答案 1 :(得分:1)

也许我不明白你的问题,但这很好用,参考v14.0:

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