如何在 Clojure CLR 中调用 GetCurrentDirectory 方法?

How To Invoke GetCurrentDirectory Method in Clojure CLR?

我只是稍微尝试了一下 Clojure CLR,但我对如何使看起来应该是一个非常简单的调用工作感到困惑。

版本是 Clojure 1.10.0-master-SNAPSHOT

在 REPL 中我这样做:

(import 'System.IO.FileSystem)
(FileSystem/Directory/GetCurrentDirectory)

我收到以下回复:

Syntax error (InvalidOperationException) compiling at (REPL:1:2).
Unable to find static field: GetCurrentDirectory in

我能找到的关于“无法找到静态字段:”的所有信息似乎都表明我的程序集名称有误,但事实并非如此。

我也试过这个:

(. FileSystem/Directory GetCurrentDirectory)

然后我得到

Syntax error (InvalidOperationException) compiling at (REPL:1:2).
Unable to find static field: Directory in System.IO.FileSystem

也试过这个:

(FileSystem/Directory/GetCurrentDirectory [])

我得到这个错误:

Syntax error (InvalidOperationException) compiling at (REPL:1:2).
Unable to find static field: GetCurrentDirectory in

谁能告诉我我哪里错了?

在Core 3.1和Net 5.0下,System.IO.FileSystem不包含GetCurrenDirectoryDirectory。 (您可以通过评估 ((map #(.Name %) (concat (.GetMethods System.IO.FileSystem) (.GetProperties System.IO.FileSystem)) 来快速查看可用的内容。)

有一个 System.IO.Directory class 和一个 GetCurrentDirectory 方法。尝试

(System.IO.Directory/GetCurrentDirectory)

或者如果您更愿意导入 class

(import 'System.IO.Directory)
(Directory/GetCurrentDirectory)