相关疑难解决方法(0)

如何将使用Shell COM的C#代码转换为F#?

我有以下C#方法:

private static bool IsLink(string shortcutFilename)
{
    var pathOnly = Path.GetDirectoryName(shortcutFilename);
    var filenameOnly = Path.GetFileName(shortcutFilename);

    var shell = new Shell32.Shell();
    var folder = shell.NameSpace(pathOnly);
    var folderItem = folder.ParseName(filenameOnly);
    return folderItem != null && folderItem.IsLink;
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试将其转换为F#:

let private isLink filename =
    let pathOnly = Path.GetDirectoryName(filename)
    let filenameOnly = Path.GetFileName(filename)
    let shell = new Shell32.Shell()
    let folder = shell.NameSpace(pathOnly)
    let folderItem = folder.ParseName(filenameOnly)
    folderItem <> null && folderItem.IsLink
Run Code Online (Sandbox Code Playgroud)

然而,它报告该let shell = new Shell32.Shell()行的错误,说new不能在接口类型上使用.

我刚刚犯了一个愚蠢的语法错误,还是需要从F#访问COM所需的额外工作?

com f# c#-to-f#

5
推荐指数
1
解决办法
275
查看次数

标签 统计

c#-to-f# ×1

com ×1

f# ×1