3

我正在尝试将以下 C# 重写为 F#,它使用 NSubstitute 模拟 Log4Net 记录器,并将传递给 Log.ErrorFormat 调用的参数捕获到 _loggerException 字符串中。

string _loggerException = string.Empty;

this.c_logger.When(log => log.ErrorFormat(
    Arg.Any<string>(), Arg.Any<string>()))
    .Do(logger => _loggerException = logger.Arg<string>().ToString());

以下是我达到的F#

let mutable _loggerException = System.String.Empty

let _logger = Substitute.For<ILog>()

SubstituteExtensions.When(_logger, _logger.WarnFormat(Arg.Any<string>(), Arg.Any<string>())).Do(fun logger -> _loggerException <- logger.Arg<string>())

但是,我在第二个参数上遇到错误SubstituteExtensions.When-_logger.WarnFormat(Arg.Any<string>(), Arg.Any<string>())如下:

这个表达式应该有 typeAction<ILog>但这里有 type unit

关于我做错了什么有什么想法吗?

4

0 回答 0