Com 在F中嵌入互操作类型#
我们可以在F#中嵌入互操作类型吗 首先,我在参考资料中看不到这样做的选项 其次,如果我在C#中嵌入类型,它会告诉我引用接口而不是具体类:Com 在F中嵌入互操作类型#,com,f#,com-interop,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 va
//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#总是希望引用具体类。
有办法解决这个问题吗?也许我不理解你的问题,但参考v14.0,这很好:
open Microsoft.Office.Interop.Access.Dao
let dbe = DBEngineClass() :> DBEngine
Tao Liu谈到了从F#到发现要实例化的正确类所必须做的一些额外工作。据我所知,没有办法嵌入互操作类型。我很高兴被证明是错的。:) 确实如此,但是您仍然指示二进制文件实际绑定到v14.0版本特定的类。COM有这种接口的概念,这种概念在C#中的语言层面上已经出现。这就是为什么你可以重新开始。。。界面!我的想法是,我不在乎哪个客户端库将实现该接口。我将这种泛型向下推到运行时,由运行时负责遵守它。