Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Com 在F中嵌入互操作类型#_Com_F#_Com Interop - Fatal编程技术网

Com 在F中嵌入互操作类型#

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

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

也许我不理解你的问题,但参考v14.0,这很好:

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

Tao Liu谈到了从F#到发现要实例化的正确类所必须做的一些额外工作。据我所知,没有办法嵌入互操作类型。我很高兴被证明是错的。:)

确实如此,但是您仍然指示二进制文件实际绑定到v14.0版本特定的类。COM有这种接口的概念,这种概念在C#中的语言层面上已经出现。这就是为什么你可以重新开始。。。界面!我的想法是,我不在乎哪个客户端库将实现该接口。我将这种泛型向下推到运行时,由运行时负责遵守它。