我有以下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所需的额外工作?