gpt4 book ai didi

f# - 如何在 F# 中创建 COM 对象

转载 作者:行者123 更新时间:2023-12-04 06:33:47 24 4
gpt4 key购买 nike

我需要 IMessage 接口(interface)。在 C# 中我可以写

CDO.Message oMsg = new CDO.Message(); // ok

但是当我尝试在 F# 中执行此操作时
let oMsg = new CDO.Message()

我收到一条错误消息:

'new' cannot be used on interface types. Consider using an object expression '{ new ... with ... }' instead.



如何解决这个问题呢?

最佳答案

您需要使用在接口(interface)名称中添加了“类”的版本:

open System

[<EntryPoint>]
[<STAThread>]
let main argv =
let oMsg = new CDO.MessageClass()
oMsg.Subject <- "Hello World"
Console.WriteLine(oMsg.Subject)
Console.ReadLine() |> ignore
0

注意:我还必须明确添加对 Microsoft ActiveX Data Objects 6.0 Library 的引用。到项目以使对象实例化工作。

如果您想使用特定接口(interface)而不是 Co-Class(如 Hans Passant 建议的那样),请使用将创建的 Co-Class 转换为接口(interface)的此版本,从而返回指向实际接口(interface)的指针。
open System

[<EntryPoint>]
[<STAThread>]
let main argv =
let oMsg = upcast new CDO.MessageClass() : CDO.IMessage
oMsg.Subject <- "Hello World"
Console.WriteLine(oMsg.Subject)
Console.ReadLine() |> ignore
0

关于f# - 如何在 F# 中创建 COM 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37226321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com