我们可以在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#总是希望引用具体类。 有办法解决这个问题吗?
答案 0 :(得分:2)
刘涛谈到你要从F#做一些额外的工作,以发现正确的班级来实现here。据我所知,没有办法嵌入互操作类型。我很高兴被证明是错的。 :)
答案 1 :(得分:1)
也许我不明白你的问题,但这很好用,参考v14.0:
open Microsoft.Office.Interop.Access.Dao
let dbe = DBEngineClass() :> DBEngine