用null解决重载歧义

vcs*_*nes 5 f#

我正在使用F#中的API(我无法控制),它声明了两个构造函数,如下所示:

public TheType(string bar, bool foo)

public TheType(IDisposable baz, bool foo)
Run Code Online (Sandbox Code Playgroud)

我需要使用第一个构造函数创建对象的实例,但是传递null为bar.F#编译器当然对我试图解决的构造函数感到困惑:

//Private field
static let blah : TheType = new TheType(null, false)
Run Code Online (Sandbox Code Playgroud)

我可以通过强制转换null为字符串来解决问题:

static let blah : TheType = new TheType(null :> string, false)
Run Code Online (Sandbox Code Playgroud)

哪个有效,但这给了我一个汇编警告:

类型'string'没有任何正确的子类型,不需要用作静态强制的目标

这也是有道理的.有没有办法解决过载歧义而不诉诸编译警告?

Lee*_*Lee 7

您可以指定null的类型:

static let blah : TheType = new TheType((null : string), false)
Run Code Online (Sandbox Code Playgroud)

  • 多么尴尬. (2认同)